我今天制作了这个代码,但我不知道问题是什么?理论上,findOne()函数应该适用于for的每个循环。这不是发生的事情。在数组中有几个元素,我想保存所有这些。我是NodeJS中的新手,但()的循环总是相同或不相同?
var sType = models.Type; // Model Mongoose
var word = ''; // Word
var i = 0;
for( i = 0; i < arrayData.length; i++ ){
word = arrayData[i]; // Save the element in word, I made this to try to pass the variable.
sType.findOne({ nameType: word }, { _id : 1 }, function( err, type ){
console.log( word ); // In the console, show me the last element of array x20.
if( err )
throw err;
if( !err && type == null ){
var types = new sType({
nameType: word
});
types.save( function( err ){
if( err )
throw err;
});
}
});
}
如果我没有创建变量&#39; word,那么该程序会给我一个错误&#39;验证错误:路径&#39; nameTYpe&#39;是必需的。&#39;
答案 0 :(得分:0)
如果在循环中使用方法findOne,则需要等待回调,尝试使用库async.js,
这是一个例子:
async.eachSeries(arrayData, function(data, dataCallback) {
sType.findOne({}, {}, function( err, type ) {
//your code after the findOne method
//return to the next element of array
dataCallback();
}
}, function done() {
console.log("loop end");
});