【问题标题】:why my updateOne mongodb does not return anything?为什么我的 updateOne mongodb 不返回任何内容?
【发布时间】:2018-12-05 15:41:34
【问题描述】:

我有这个代码:

    MongoClient.connect(config.mongoURL, {useNewUrlParser: true}, (err, db)=> {
    if (err) {
        console.log("Err", err)
        cb(-1)
    }
    else {
        var con = db.db('englishAcademy')
        try {
            con.collection("sound").updateOne({"_id": new ObjectID(sndId)}, {
                $set: {
                    "snd_title": info.snd_title,
                    "snd_type": info.snd_type,
                    "snd_url": info.snd_url,
                    "snd_lsnId": info.snd_lsnId,
                    "snd_lvlId": info.snd_lvlId,
                    "snd_order": info.snd_order
                }
            }), (err, doc) => {
                console.log("result")
                if (err) {
                    console.log(err)
                    cb(-1)
                }
                else {
                    console.log(doc)
                    let result = 'row affected'
                    cb(doc)
                }
            }
        }
        catch (e) {
            console.log(e)
        }


    }
})

谁能告诉我我的代码有什么问题?updateOne 函数没有返回任何内容。但是我的 mongo 数据库得到了更新。

编辑: 到目前为止我已经这样做了,但没有成功。有人可以帮忙吗?我使用断言没有成功。我使用 new :true,没有成功。我使用 finde 和更新,没有成功

            let infor =  {
                "adm_name": info.adm_name,
                "adm_username": info.adm_username,
                "adm_password": info.adm_password
            }
            con.collection("admins").findOneAndUpdate({"_id": new ObjectID(admId)}, {
                $set: infor
            },{new:true} ), (err , result) => {
                console.log("result")
                if (err) {
                    console.log(err)
                    assert.equal(err, null);
                    cb(-1)
                }
                else {
                    let result = 'row affected'
                    assert.equal(1, result.result.n);

               }

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    设置新:真

    MongoClient.connect(config.mongoURL, {useNewUrlParser: true}, (err, db)=> {
        if (err) {
            console.log("Err", err)
            cb(-1)
        }
        else {
            var con = db.db('englishAcademy')
            try {
                con.collection("sound").updateOne({"_id": new ObjectID(sndId)}, {
                    $set: {
                        "snd_title": info.snd_title,
                        "snd_type": info.snd_type,
                        "snd_url": info.snd_url,
                        "snd_lsnId": info.snd_lsnId,
                        "snd_lvlId": info.snd_lvlId,
                        "snd_order": info.snd_order
                    },{new: true}
                }), (err, doc) => {
                    console.log("result")
                    if (err) {
                        console.log(err)
                        cb(-1)
                    }
                    else {
                        console.log(doc)
                        let result = 'row affected'
                        cb(doc)
                    }
                }
            }
            catch (e) {
                console.log(e)
            }
        }
    })
    

    【讨论】:

      【解决方案2】:

      试试这个方法..

      collection.findOneAndUpdate(
         {"_id": new ObjectID(sndId)},
           $set: yourData },
           { new: true },
           function (err, documents) {
             res.send({ error: err, result: documents });        
           }
      );   
      

      现在您可以在 cb 中返回 newData

      【讨论】:

      • 它将新数据设置为声音集合中的对象。我不想要那个
      • 那你想要什么?
      • { "_id" : ObjectId("5c0633a231b34f19a4110ac3"), "snd_title" : "greeting", "snd_type" : "podcast", "snd_url" : "localhost:9000/upload/sound/1/1/1543913890868_1.mp3", "snd_lsnId" : "1", "snd_order" : "1", "snd_lvlId" : "1" } 我的收藏是这样的。我不想要嵌套对象
      • @ShahrzadNazemi 所以简而言之,这是您的新更新数据。我说的对吗?
      • 是的。但是我的问题不是返回的数据。我根本没有得到任何数据。我的代码在这个函数运行后没有做任何事情
      猜你喜欢
      • 2016-11-26
      • 2012-04-02
      • 2018-01-24
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      • 2016-02-19
      相关资源
      最近更新 更多