node.js - 查询Mongo数据库

标签 node.js mongodb

我需要对我的 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/

相关文章:

node.js - 如何在 Heroku 上运行二进制文件

node.js - 我们如何停止 webdriver-manager?

javascript - 在 Promise 中解决 Promise

node.js - MongoDB:将多个文档插入具有唯一索引的集合中,即使有些文档违反了索引

regex - 在Rust中使用正则表达式查询MongoDB

node.js - 在 Hyperledger Fabric NodeJS 智能合约中实例化链码后,如何防止调用 "init"函数?

javascript - 如何删除数组数组中的第一个索引?

node.js - 如何计算mongoDB中唯一数据的数量

javascript - Meteor - 将投票添加到集合中的特定 ID

java - MongoDb upsert 异常无效的 BSON 字段