我需要对我的 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 的数组中 label 的值,如下所示:
cl = ['Date Of Commencement'];
我的问题是如何访问该数组条目,因为以下代码给了我一个“意外的 token ”
我的查询是这样的:(在后端使用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 将有多个条目。
最佳答案
您使用的 findOne 查询是异步的。这就是为什么您会看到 [ Promise { <pending> } ]
。
有很多方法可以处理异步行为:
- 回调
- 异步库
- promise
- 生成器 + 协程
- 异步+等待
如果您的 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);
}
}
关于node.js - 查询Mongo数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45373114/