私は、最短時間で働いた人を見つけることによって、人をシフトに割り当てる約束を使用しようとしています。これに私は集計を使用して個々の人の可用性文書を、彼らが最後に作業した時を含むレコード文書とリンクさせます。 selectedPeopleListを空の配列として出力しているため、約束事と関係があるコードの全セクションをスキップしているようです。ここに私のコードは次のとおりです。javascriptで約束を順々に実行する
var selectedPeopleList = [];
var sequentially = function(shifts) {
var p = Promise.resolve();
shifts.forEach(function(){
p=p.then(function() { return collection.aggregate([
{
$lookup:
{
from: "personRecord",
localField: "ATTU_ID",
foreignField: "ATTU_ID",
as: "record"
}
},
{
$match : { 'Available[]' : { $elemMatch : { $eq : shift.value } }, "record.ATTU_ID": { $nin : _.map(selectedPeopleList, 'ATTU_ID') } }
},
{
$sort : { "record.lastShift" : 1 }
}
]).toArray(function(err, docs){
assert.equal(err, null);
}).then(function (result) {
if(docs && docs.length) {
selectedPeopleList.push({ ATTU_ID : docs[0].ATTU_ID, Name: docs[0].Name });
console.log(docs[0]);
}
});
});
})
return p;
};
console.log(selectedPeopleList);
約束は、私はあなたが提案した編集を行わ –