Javascript findOrCreate在环回模型中

Javascript findOrCreate在环回模型中,javascript,node.js,model,loopbackjs,strongloop,Javascript,Node.js,Model,Loopbackjs,Strongloop,我在环回上发现了一个有趣的问题。当我用findOrCreate添加记录时,我感到困惑。让我们来看一个例子: for (var x = 0; x < 10; x++) { console.log(x); var Log = app.models.Log; Log.findOrCreate({ where: { modelName: '123' } }, { modelName: '123' },

我在环回上发现了一个有趣的问题。当我用
findOrCreate
添加记录时,我感到困惑。让我们来看一个例子:

  for (var x = 0; x < 10; x++) {
    console.log(x);
    var Log = app.models.Log;
    Log.findOrCreate({
      where: {
        modelName: '123'
      }
    }, {
      modelName: '123'
    }, function(err, log) {
      if (err) return;
      if (log) {
        console.log("+ " + log.id);
      }
    });
  }
for(变量x=0;x<10;x++){
控制台日志(x);
var Log=app.models.Log;
Log.findOrCreate({
其中:{
型号名称:“123”
}
}, {
型号名称:“123”
},函数(错误,日志){
如果(错误)返回;
如果(日志){
console.log(“+”+log.id);
}
});
}
我认为它应该只使用
modelName
'123'创建一条记录,但我最终得到了10条


有什么问题吗?

这是意料之中的。您正在同步运行代码。如果以异步方式运行它,则只会看到创建了一个文档。试试这个:

var arr = new Array(10);
async.eachSeries(arr, function (pos, callback) {
    console.log(pos);
    Log.findOrCreate({
      where: {
        txt: '123'
      }
    }, {
      txt: '123'
    }, function (err, log) {
      if (err) return;
      console.log("+ " + log.id);
      callback();
    });
  }, function (err) {
    if (err) {
      throw err;
    }
  }
);

这是意料之中的。您正在同步运行代码。如果以异步方式运行它,则只会看到创建了一个文档。试试这个:

var arr = new Array(10);
async.eachSeries(arr, function (pos, callback) {
    console.log(pos);
    Log.findOrCreate({
      where: {
        txt: '123'
      }
    }, {
      txt: '123'
    }, function (err, log) {
      if (err) return;
      console.log("+ " + log.id);
      callback();
    });
  }, function (err) {
    if (err) {
      throw err;
    }
  }
);

你是个明星!谢谢!!您确定.findOrCreate()接受筛选器对象中的where键吗?如果我使用
.findOrCreate({where:{key:'value'}})
则创建的对象不包含指定的值,而是null。但是如果我使用
.findOrCreate({key:'value'})
一切似乎都是正确的。在这两种情况下,数据库中的困难项都被正确存储。@Kpihus请查看这篇文章,了解关于这个问题的详细讨论:你是一个明星!谢谢!!您确定.findOrCreate()接受筛选器对象中的where键吗?如果我使用
.findOrCreate({where:{key:'value'}})
则创建的对象不包含指定的值,而是null。但是如果我使用
.findOrCreate({key:'value'})
一切似乎都是正确的。在这两种情况下,数据库中的难处理项都正确存储。@Kpihus请查看此帖子以了解有关此问题的详细讨论: