我在模块中有一个函数
db
使用节点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()
正在完成并启动
.then()
在
db.addUser(num)
呼叫完成。但我认为回报承诺意味着
.然后()
必须等待由第一个
.然后()
完成。