MongoDB查询错误 - 数组 - 循环

时间:2016-05-30 22:14:16

标签: arrays node.js mongodb mongoose

我今天制作了这个代码,但我不知道问题是什么?理论上,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;

1 个答案:

答案 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");
});