Sails.js 帆船水线同步呼叫
如何使用Sails.js同步调用水线函数。我试过了Sails.js 帆船水线同步呼叫,sails.js,waterline,Sails.js,Waterline,如何使用Sails.js同步调用水线函数。我试过了 var data = Model.findOne({ foo : "bar"}); 及 他们都不为我工作 正确的方法是什么 水线方法是异步、简单和简单的。没有命令会使他们不这样做。您会发现,许多访问外部数据源(数据库、HTTP等)的节点方法都是如此 如果您需要以更同步的方式链接它们,您可以使用类似这样的包。我不确定waterline是否可以这样做。我几乎可以肯定这不是我的本意 Model.findOne({ foo : "bar"}, fun
var data = Model.findOne({ foo : "bar"});
及
他们都不为我工作
正确的方法是什么 水线方法是异步、简单和简单的。没有命令会使他们不这样做。您会发现,许多访问外部数据源(数据库、HTTP等)的节点方法都是如此
如果您需要以更同步的方式链接它们,您可以使用类似这样的包。我不确定waterline是否可以这样做。我几乎可以肯定这不是我的本意
Model.findOne({ foo : "bar"}, function(err, result){
var data = result;
});
以上情况会更好……不要反对nodejs的异步特性。这只会在以后造成伤害。很抱歉,这个答案太晚了,您现在可能已经找到了解决方案,但为了以后的参考,请看这里 您可能需要通过更新/config/globals.js并设置
:true
然后,您将使用以下命令编辑/config/bootstrap.js
global.sync = require("synchronize");
_.each(sails.models,function(model){
_.map(model,function(attrValue,attrKey){
if(typeof attrValue=="function"){
model[attrKey+"Sync"]=sync(attrValue);
}
});
});
从现在开始,您可以使用任何模型函数的同步版本,方法是在函数后面添加“Sync”,如
users.findSync({fname:'Mostafa'})
您的解决方案看起来不错。但是我们还需要添加exec函数。exec(函数(err,find)。如何进行同步?如果我使用您的方法和findSync,则返回的对象的属性值始终为空。但是为什么?有什么好处吗?
global.sync = require("synchronize");
_.each(sails.models,function(model){
_.map(model,function(attrValue,attrKey){
if(typeof attrValue=="function"){
model[attrKey+"Sync"]=sync(attrValue);
}
});
});