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请查看此帖子以了解有关此问题的详细讨论: