我试图在Dart中使用sqljocky代码sql访问数据库。由于我想用我的数据库处理程序返回的结果进行一些计算,该方法返回一个Future。sqljocky查询没有方法'然后'(飞镖数据库访问)
但是当我尝试运行它,我得到了以下错误:
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运行查询,它返回正确的数据,所以它是正确的。
有人可以给我一个关于如何解决它的提示吗?
由于格雷格,我刚刚解决了它,我会写我的答案,也可能是别人有帮助的。 –