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

如何使用Sails.js同步调用水线函数。我试过了

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);
        }
    });
});