【发布时间】:2018-08-27 10:02:01
【问题描述】:
我在模块 db 中有一个函数,它使用 node-postgres 将新行插入数据库:
module.exports={addUser: function(phonenumber){
return new Promise(function(resolve,reject){
queryStr='insert into users (phonenumber,status,exitStatus) values (\''+phonenumber+'\') returning *';
pool.query(queryStr,(err,res)=>{
if (err){
reject(err);
}
else{
resolve(res);
}
});
});
}
}
当我这样称呼它时:
var number=123456789;
testAddUser(number);
function testAddUser(phonenumber){
db.addUser(phonenumber).then(val=>{console.log(val.rows[0])});
}
然后成功将返回的行输出到控制台日志:
anonymous {
id: 25,
phonenumber: '123456789'}
这是我想要的。
但是当我这样调用它时,从另一个 Promise-returning 函数的 then:
db.someOther_promise(num).then(value=>{
doSomeStuff();
return db.addUser(num);
}).then(value=>{
console.log("value "+value.rows[0]);
})
那我只得到输出:
value [object Object]
这让我想知道someOther_promise() 是否可能在db.addUser(num) 调用完成之前完成并启动.then() 解析。但是我认为返回一个promise意味着第二个.then()必须等待第一个.then()的返回值创建的promise完成。
【问题讨论】:
标签: node.js promise node-postgres