【问题标题】:Getting undefined while accessing result of mongoDB insertOne from NodeJS从NodeJS访问mongoDB insertOne的结果时获取未定义
【发布时间】:2022-02-15 10:04:41
【问题描述】:

我正在尝试通过在 Nodejs 的 mongoDB 中插入一种方法来访问文档。但我在控制台中变得不确定

const mongodb = require('mongodb')

const MongoClient = mongodb.MongoClient
const connectURL = 'mongodb://127.0.0.1:27017'

const databaseName = 'Task-Manager'

MongoClient.connect(connectURL , {useNewUrlParser : true } , (error , client )=>{

    if(error)
    {
        return console.log("Unable to connect to database")
    }

    const db = client.db(databaseName)

    db.collection('Users').insertOne({
        id: 12820,
        Name: "karthik",
        age : 20
    } , (error , result)=>{

        if(error)
        {
        return console.log("error has occured ")
        }
        console.log(result.ops)// I am getting undefined if i print  the document in console
    })

})

【问题讨论】:

  • 请阅读一些mongoDB教程,仅供参考youtube.com/playlist?list=PLIfcYFqzDXHkSPsm1DfMuA0TEgpycA2e1
  • @Karthik,如果答案有效,则将其标记为确认,否则如果您仍然面临问题,请在此处写下
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: node.js mongodb error-handling server mongodb-query


【解决方案1】:

您正在尝试像下面这样打印

console.log(result.ops)

但是结果对象中没有像“ops”这样的东西。

结果对象的形状如下图

{
  acknowledged: true,
  insertedId: new ObjectId("620ac763da37bbb06c9472a1")
}

意思是,mongoDB只是发回Aknowledgement和insertedId(这是插入文档的objectId)。

因此,如果您还想要该文档,则需要添加代码以查找具有此对象 ID 的数据,如下所示。

const mongodb = require('mongodb')

const MongoClient = mongodb.MongoClient
const connectURL = 'mongodb+srv://mongoclass:newpass@myclass.fczoc.mongodb.net?retryWrites=true&w=majority'

const databaseName = 'Task-Manager'

MongoClient.connect(connectURL , {useNewUrlParser : true } , (error , client )=>{

    if(error)
    {
        return console.log("Unable to connect to database")
    }

    const db = client.db(databaseName)

    db.collection('Users').insertOne({
        id: 12820,
        Name: "karthik",
        age : 20
    } , (error , result)=>{

        if(error)
        {
        return console.log("error has occured ")
        }
        // changes are below
        db.collection('Users').findOne({_id:result.insertedId})
        .then((data) =>{
            console.log(data);
        } )
        .catch((err) =>{
            console.log(err);
        })
    })

})

然后它会给出如下数据

{
  _id: new ObjectId("620ac88a1471142775a484b5"),
  id: 12820,
  Name: 'karthik',
  age: 20
}

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 2020-10-25
    • 2013-06-05
    • 2021-02-19
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多