-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