我具有此功能,但无法将其放入我的item变量中。如何将其放在item变量之外?
function getItems(id) {
let item;
sequelize.query("SELECT * FROM table WHERE id = " + id, {type: Sequelize.QueryTypes.SELECT})
.then(myTableRows => {
// item = JSON.stringify(myTableRows);
});
return item;
}
答案 0 :(得分:0)
您的续集查询返回一个Promise,您不能在Promise中设置项目的值并期望立即得到响应。如果您希望它以这种方式工作,则需要正确处理Promise,或使用async-await。您可以将函数重新配置为如下所示,这将解决该问题:
async function getItems(id) {
let item;
item = await sequelize.query("SELECT * FROM table WHERE id = " + id, {type: Sequelize.QueryTypes.SELECT});
return item;
}
================================================ ==========================
更新:
我不确定您在节点方面的经验水平,但是在节点杠杆方面有很多承诺。在较高的级别上,这意味着执行一些操作,然后在完成后执行一些操作。使用sequelize,您可以执行SQL查询,获得响应后,现在就可以对该数据进行处理。
Async-Await是一种使诺言在理解上更加直接的方法,但其作用相同。在线上有很多文章可以帮助您更好地理解这些概念。
现在,正在调用getItems
的函数也必须是async-await,或者将其作为promise调用才能真正获取值。例如:
async function test(id) {
let items = await getItems(id);
console.log(items)
}
希望这可以消除一些困惑,但是如果您不清楚诺言如何运作,您可能还需要更多地了解诺言。希望这会有所帮助。