我正在使用nodejs和serverless,尝试查询mysql
module.exports.message = (event, context, callback) => {
const { content } = event;
let search = new Shop();
console.log('start');
search._search(content, (data) => {
console.log(callback);
callback(null, data);
});
console.log('finish');
});
在车间课程中,
class Shop{
_search(text, unit = false, callback){
return this._morphs(text).then(function(data){
return data;
})
}
_morphs(text, callback){
return new Promise((resolve, reject) => {
let result = text.split(" ");
let query = `SELECT * from shop where name LIKE CONCAT('%', ?, '%')`;
console.log(1);
for(let i = 0; i < result.length; i++){
DB.query(query, result[i], function (data, error) {
console.log(2);
resolve(data);
});
}
});
}
}
当我执行这个时,
开始1完成2回调
这是我在日志上看到的。我想在结束前执行回调。所以这个代码可以返回数据。
我正在使用mysql moudle。https://www.npmjs.com/package/mysql
提前谢谢!!
1条答案
按热度按时间n7taea2i1#
javascript在默认情况下是同步的,但是当您编写异步(回调/承诺/异步)代码时,您需要正确地处理它。
在您的代码中,有两个问题
module.exports.message =
函数console.log('finish')不会等待search._search
.Db.query
,您在每次迭代中的承诺。这应该有效=>