[英]Returning the results of an mysql-query. Ends up returning undefined
我有一個查詢數據庫並返回結果的函數。 但是無論我返回什么,它都是不確定的。
服務器代碼:我在這里調用函數
var express = require('express');
var DBmodule = require('./db.js');
var router = express.Router();
router.get('/topics', function(req,res){
res.send(DBmodule.getTopics()); //Call to db.js - This returns undefined
});
db.js代碼
var mysql = require('..\\node_modules\\mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'password'
});
exports.getTopics = function(){
connection.connect();
connection.query('USE db');
var strQuery = "SELECT * FROM topics";
connection.query(strQuery, function(err, rows){
if(err){
throw err;
}else{
return rows;
}
});
connection.end();
};
讓我感到困惑的是,如果我在getTopics函數中使用console.log行,則會得到正確的結果。 但是在服務器代碼中,我得到的都是不確定的。
從我的搜索中,我發現它可能需要執行回調操作,但是無論如何我還是無法使它正常工作。 有什么建議嗎?
您不能返回async
函數,只需將rows
傳遞給回調即可:
exports.getTopics = function(cb) {
connection.connect();
connection.query('USE db');
var strQuery = "SELECT * FROM topics";
connection.query(strQuery, function(err, rows){
if (err) {
throw err;
} else {
cb(rows);
}
});
connection.end();
};
DBmodule.getTopics(function(rows){
console.log(rows);
});
正如Tresdin所說,回調應該是解決方案。 我找到了此ORM for Node,它可用於許多sql數據庫:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.