我試圖在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運行查詢,它返回正確的數據,所以它是正確的。
有人可以給我一個關於如何解決它的提示嗎?
由於格雷格,我剛剛解決了它,我會寫我的答案,也可能是別人有幫助的。 –