【发布时间】:2014-06-17 16:00:01
【问题描述】:
我是 nodejs 的新手,我正在尝试在 for 循环中使用 Promise,在该循环中我首先获取 postgres 序列的下一个值,然后将其值重置为
for(var i=0;i<3;i++){
getNextVal().then( function(result) {
var nextVal = result.nextval;
console.log("next value :"+nextVal);
setSeqVal(nextVal).then( function(result) {
console.log("reset value :"+result.curValOfSeq);
});
});
}
function getNextVal(){
var promise = new Promise (function(resolve, reject) {
pg.connect(conString, function(err, client, done){
if(err) {
console.log ('error fetching client from pool ' + err);
reject (err);
}
client.query("select nextval('test_seq')", function(err, result) {
done();
if(err) {
console.log('error running query', err);
reject (err);
}
if (result.rows) {
resolve({'nextval' : result.rows[0].nextval});
}
else {
console.log('Could not get next value');
}
});
});
});
return promise;
};
function setSeqVal (curVal){
var promise = new Promise (function(resolve, reject) {
pg.connect(conString, function(err, client, done){
if(err) {
console.log ('error fetching client from pool ' + err);
reject (err);
}
client.query("ALTER SEQUENCE test_seq RESTART WITH "+curVal, function(err, result) {
done();
if(err) {
console.log('error running query', err);
reject (err);
}
resolve({'curValOfSeq' : curVal});
});
});
});
return promise;
};
输出如下:
next value :1
next value :2
next value :3
reset value :1
reset value :2
reset value :3
我想要的输出如下:
next value :1
reset value :1
next value :2
reset value :2
next value :3
reset value :3
请帮助我解决这个问题。
【问题讨论】:
-
你应该改用pg-promise ;)
标签: javascript node.js postgresql