-1
我知道this stackoverflow答案,我一直在使用它來幫助我。 但是,當我將代碼應用於我的情況時,會發生一些奇怪的事情。 似乎在我的代碼中名爲execSync的wrapAsync函數運行並輸出它應該是的;不過,它剛剛完成了最後的工作,就像我之前使用wrapAsync一樣。流星WrapAsync異步工作
代碼
Meteor.methods({
'distinctSpecs'({}){
console.log("called");
var json_categories_clean = [];
var execSync =
Meteor.wrapAsync(require("child_process").exec,
require("child_process"))
var returned_data =
execSync(
"mongo products --eval \"var collection='laptops', outputFormat='json'\" variety.js",
{ cwd:"/home/jonathan/Documents/variety-master"},
(err, stdout, stderr) => {
if (err) {
console.error(err);
console.log(stdout);
console.log(stderr);
return;
}
console.log("waited for this");
var json_categories =
JSON.parse(stdout.substring(
stdout.indexOf('[', stdout.indexOf('[')+1),
stdout.lastIndexOf(']')+1));
for (var x=0; x < json_categories.length; x++) {
json_categories_clean.push(json_categories[x]["_id"])
}
console.log("returning inner");
return json_categories_clean;
});
console.log("returning outer");
return returned_data;
}
});
**的**輸出
called
returning outer
waited for this
returning inner
我不認爲你應該把回調傳遞給'execSync'。嘗試不,我猜如果你傳遞錯誤的參數數目,流星不會正確包裝。 – Bergi