我正在尝试在 Dart 中使用sqljocky 编写对数据库的 sql 访问。因为我想用我的数据库处理程序返回的结果进行一些计算,所以该方法返回一个 Future。
但是当我尝试运行它时,我收到以下错误:
Uncaught Error: The null object does not have a method 'then'`
我已经运行了调试器,发现这个错误出现在:
db.query('select * from user where email="$email"').then(...)
但是 catchError 子句不会触发。
我的处理方法是:
// db is a ConnectionPool
Future<Map<String,String>> queryUser(String email){
print(email);
db.query('select * from user where email="${email}"').then((result) { // here raise the error
Map<String,String> results = new Map<String,String>();
result.forEach((row){
results['status'] = '200';
results['ID'] = row[0];
results['Image'] = row[1];
results['Name'] = row[2];
results['Email'] = row[3];
results['Password'] = row[4];
});
return results;
}).catchError((error){
Map<String,String> results = new Map<String,String>();
results['status'] = '500';
return results;
});
}
调用此处理程序的方法是:
List getUser(String email) {
Future<Map<String,String>> result = dbhandler.queryUser(email);
result.then((Map<String,String> result) {
String statuscode = result['status'];
result.remove('status');
String json = JSON.encode(result);
List pair = new List();
pair.add(statuscode);
pair.add(json);
return pair;
});
如果我直接在 phpmyadmin 中运行查询,它会返回正确的数据,所以它是正确的。
有人可以给我一个关于如何解决它的提示吗?