gpt4 book ai didi

node.js - Sequelize 多个原始查询无法解决先前的 promise

转载 作者:行者123 更新时间:2023-12-03 22:43:12 25 4
gpt4 key购买 nike

我正在学习 node 并尝试使用 express 和 sequelize 构建一个 node 应用程序来管理数据库数据。

我已经为 Node 构建了一个模块以连接到数据库。下面是模块的代码:

sql.js:

var seq = require('./DBconfig.js');

module.exports = {
getTable1: function(o){
return seq.query('SELECT * FROM Table1).then(function(results){
o.table1 = results;
return o;
},
getTable2: function(o){
return seq.query('SELECT * FROM Table2).then(function(results){
o.table2 = results;
return o;
},
getTable3: function(o){
return seq.query('SELECT * FROM Table3).then(function(results){
o.table3 = results;
return o;
}
};

在我的应用程序中,我可以完美地一一使用这个模块。
但是,当我尝试将它们连接在一起时:

路由.js:
var sql = require('./sql.js');

app.get('/test', function(req,res){
var a = {data:[{x: 1, y:1}]};
sql.getTable1(a).then(sql.getTable2(result1)).then(
sql.getTable3(result2)).then(function(result3){
console.log(result3);
res.send(result3);
})
}

它总是返回:ReferenceError: result1 is not defined。
我如何才能让 promise 工作以正确通过解决方案?

最佳答案

sql.getTable1(a).then(sql.getTable2(result1)).then(
sql.getTable3(result2)).then(function(result3){
console.log(result3);
res.send(result3);
})

如果你用 () 编写了一个函数,
它将被直接调用并用结果替换 fn(something)
这意味着 sql.getTable2(result1) 实际上是一个结果
sql.getTable1(a).then(sql.getTable2).then(
sql.getTable3).then(function(result3){
console.log(result3);
res.send(result3);
})

试试这个,
结果将自 Action 为参数传递给下一个函数

关于node.js - Sequelize 多个原始查询无法解决先前的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com