2016-04-18 18 views
1

コールバック関数を持つ関数で値を返すのはとにかくありますか?Moongoseのコールバック関数

function getnextseq(){  
autoincrement.findOneAndUpdate({ _id:"userid"}, { $inc: { seq:1}},function(err,data){ 
console.log(data.seq) 
}) 
return data.seq; 
} 
console.log(getnextseq()); 

答えて

2

findOneAndUpdateが非同期であるため、単に戻り値data.seqが機能しません。あなたは、コールバック関数を渡したり、約束

function getnextseq(cb) {  
autoincrement.findOneAndUpdate({ _id:"userid"}, { $inc: { seq:1}},function(err,data){ 
    cb(data.seq); 
}) 

} 

getnextseq(function(seq) { 
    console.log(seq); 
} 
); 

または約束を使用して、これを渡す方法方法

function getnextseq() {  
    return autoincrement.findOneAndUpdate({ _id:"userid"}, { $inc: { seq:1}}).exec(); 
} 



getnextseq().then(function(seq) { 
    console.log(seq) 
}); 
+1

約束を使用するか必要ですか? – shinta

+0

exec()は約束を返します。私は私の答えを更新しました。 –