如何使用Sails.js同步呼叫水線功能。我試圖航行水線同步呼叫
var data = Model.findOne({ foo : "bar"});
和
sync(Model, findOne);
sync.fiber(function(){
var data = Model.findOne({ foo : "bar"});
});
他們都不是爲我工作。
什麼是正確的方法來做到這一點?
如何使用Sails.js同步呼叫水線功能。我試圖航行水線同步呼叫
var data = Model.findOne({ foo : "bar"});
和
sync(Model, findOne);
sync.fiber(function(){
var data = Model.findOne({ foo : "bar"});
});
他們都不是爲我工作。
什麼是正確的方法來做到這一點?
水線方法是異步的,簡單和簡單的。否則命令不會使他們成爲他們。您會發現許多用於訪問外部數據源(數據庫,HTTP等)的節點方法都是這種情況。
如果您需要以更同步的方式鏈接它們,可以使用如async這樣做。
我不確定這是可能的水線。我幾乎可以肯定這不是這個意圖。
Model.findOne({ foo : "bar"}, function(err, result){
var data = result;
});
以上會更好....不要打擊nodejs的異步性質。它只會在晚些時候受傷。
對不起,這個答案是太晚了,你可能已經通過,現在找到了解決辦法,但以備將來參考,這裏是 你可能需要做lodash全球通過更新/config/globals.js和集_: true
那麼你會用下列
global.sync = require("synchronize");
_.each(sails.models,function(model){
_.map(model,function(attrValue,attrKey){
if(typeof attrValue=="function"){
model[attrKey+"Sync"]=sync(attrValue);
}
});
});
從這裏編輯/config/bootstrap.js上,你可以這樣users.findSync({fname:'Mostafa'})
您的解決方案看起來不錯。但是我們也需要添加exec函數。 .exec(function(err,found)。如何同步? 如果我使用你的方法和findSync,返回的對象總是屬性值爲空。 – ameilland
功能後,通過將「同步」使用任何模型函數的同步版本但爲什麼?有什麼好處嗎? – Daveman