我需要对我的mongo数据库中的以下条目执行查询:
{
"_id" : ObjectId("597b19512a5b1c3258e6440e"),
"fdata" : [
{
"type" : "header",
"subtype" : "h1",
"label" : "Date Of Commencement"
},
{
"type" : "paragraph",
"subtype" : "p",
"label" : "The partnership business shall be deemed to have commenced on and from :"
},
{
"type" : "date",
"label" : "Date Field",
"description" : "Enter correct date as per instructions in the clause",
"className" : "form-control",
"name" : "date-1501239537753"
},
{
"type" : "button",
"subtype" : "submit",
"label" : "Next",
"className" : "btn btn-primary",
"name" : "button-1501239595350",
"style" : "primary"
}
]
}
我必须获取名为 fdata 的整个数组,而我可用的参数是名为 cl 的数组中标签的值这样:
cl = ['Date Of Commencement'];
我的问题是如何访问该数组条目,因为以下代码为我提供了“意外令牌”
我的查询是这样的:(在后端使用NodeJS)
for(var i=0; i<cl.length ;i++) {
var dummy = cl[i];
//console.log(dummy);
result[i] = db.collection('clauses').findOne({fdata[0].label: dummy},{fdata});
}
它处于循环中,因为在大多数情况下,数组 cl 将有多个条目。
答案 0 :(得分:0)
您正在使用的findOne查询是异步的。这就是您看到[ Promise { <pending> } ]
的原因。
有很多方法可以处理异步行为:
如果您的Nodejs版本足够新(8+),它应该支持异步/等待方法。
async function doJob(arr) {
const clauses = db.collection('clauses');
for (const key of arr) {
const result = await clauses.findOne({'fdata.label': key});
console.log(result);
}
}