我正在尝试让计算聚合,以等待在fetch记录中解析的承诺。但我不能让等待起作用。这看起来是可以做的。但我不能让它在等待状态下工作。
我也试着把它包装在一个承诺中。但没有变化。
我收到错误:等待仅在异步函数中有效
const computeAggregate = async (model, sym) => {
model.collection.distinct("minutes_offs", {
symbol: sym
}, function (error, distMinutes) {
for (minuteIndex in distMinutes) {
console.log("inside minutes off", distMinutes[minuteIndex]);
try {
const records = await fetchRecords(model, sym, distMinutes[minuteIndex]); //this does not work.
const aggData = getAggregateData(records);
createCollection(aggData);
} catch (e) {
console.log("error in computeAggregate", e);
}
}
});
}
const fetchRecords = async (model, sym, minutesOff) => {
console.log("compute function : input param", sym, minutesOff);
var query = model.find({
symbol: sym,
minutes_offs: minutesOff
}).sort({
minutes_offs: +1
});
return query.exec();
};发布于 2019-03-09 17:40:05
您错误地使用了async / await:
const computeAggregate = (model, sym) => {
model.collection.distinct("minutes_offs", {
symbol: sym
}, async (error, distMinutes) => { // async is required here
for (minuteIndex in distMinutes) {
console.log("inside minutes off", distMinutes[minuteIndex]);
try {
const records = await fetchRecords(model, sym, distMinutes[minuteIndex]); //this does not work.
const aggData = getAggregateData(records);
createCollection(aggData);
} catch (e) {
console.log("error in computeAggregate", e);
}
}
});
}
// async is not required here because you never use await
const fetchRecords = (model, sym, minutesOff) => {
console.log("compute function : input param", sym, minutesOff);
var query = model.find({
symbol: sym,
minutes_offs: minutesOff
}).sort({
minutes_offs: +1
});
return query.exec(); // this query.exec() must return a promise
};https://stackoverflow.com/questions/55075925
复制相似问题