私は実際にmongodbの参照をjavascriptのmongooseを使ってこれらの参照のドキュメント値(info.value)に変換しようとしています。モンゴース非同期リクエスト管理
マップを使用して/ forEachを試してみましたが、mongooseリクエストは非同期であるため、何もしませんでした。
この種のコードにはあまり使用されていませんが、私が試したすべての事の後に少し失われてしまいました。
誰かが私にこの点についてのヒントを教えてもらえますか?
ちょうど情報のために、テンプレートの読み込み、mongoへの接続について心配する必要はありません。他のすべてがうまく動作しているからです。 "console.log(cond [c]);/console.log(info);"(cond [0])このエラーが発生した場合、 c]とinfoがnullで未定義です)
ブロック・オブジェクトの "content"プロパティにサブブロックを配置する予定であるため、この関数も再帰的に準備する必要があります。
お世話になりました。
// Input condition
"H1Vf3KTef || false"
// Expected result
"1 || false"
// Buggy Function
var execIfBlock = function recursExec (query, callback) {
IfBlockModel.findOne(query, function(err, ifBlock) {
if (!err) {
var cond = ifBlock.condition.split(" ");
//console.log('Block : ' + ifBlock);
//console.log('Condition : ' + cond);
var calls = new Array();
for (var c = 0, len = cond.length; c < len; c++) {
if (shortId.isValid(cond[c])) {
calls.push(function() {
InfoModel.findOne({ _id: cond[c] }, function(err, info) {
console.log(cond[c]);
console.log(info);
cond[c] = info.value;
});
});
}
}
async.parallel(calls, function(err, result) {
console.log(result);
// Do some job using the final expected result : "1 || false"
});
}
});
};
// Info template
{
"_id": "H1Vf3KTef",
"value": "1"
}
// Bloc template
{
"_id": "rkRBtLTef",
"content": [],
"condition": "H1Vf3KTef || false"
}
// Info schema
var InfoSchema = new Schema({
_id: { type: String, unique: true, required: true, default: shortId.generate },
value: { type: String, default: "0" }
});
// Bloc schema
var IfBlockSchema = new Schema({
_id: { type: String, unique: true, required: true, default: shortId.generate },
condition: { type: String, required: true, default: true },
content: [{ type: String, required: true, default: '', ref: 'block' }]
});
あなたが新しいのNode.jsを使用することはできますかあなたには、いくつかの古いバージョンで立ち往生していますか? – libik