无法在express.js中使用put请求更新数据库

时间:2019-08-27 15:03:52

标签: mongodb express

我正在尝试使用请求的主体将通过请求发布的语言更新到mongodb集合,但未更新,我是新手,将不胜感激。

mongodb文档:

 {
      "_id": {
        "$oid": "5d63e81c342987154cdc698e"
      },
      "name": "anjana",
      "email": "anju@gmail.com",
      "age": "22",
      "languages_known": [
        "Bengali",
        "Kannada"
      ],
      "phone": "684684684846"
    }  

服务器代码:

    app.put('/students/add',function(req,res){
        var myobj={
           $set:{_id:require('mongodb').ObjectID(req.body.id),languages_known:req.body.remove}
    }


db.collection('students').updateOne({languages_known:req.body.add},myobj,function(err,result){
        if(err){throw err}
        console.log("updated")       
    })
})

请求正文:

{
  "id":"5d63e81c342987154cdc698e",
  "remove": ["Bengali", "Kannada"],
  "add": ["Tamil", "Punjabi"]
}

我希望通过邮递员使用此要求将language_known字段更新为该ID

1 个答案:

答案 0 :(得分:0)

好吧,这个问题与查询有关,您不能更新这样的文档的_id,也因为您的要求是不这样做,请尝试这样做:

服务器代码:

// replace languages_known with new languages based on _id, in case if you wanted to update the array you can use $push
app.put('/students/add', function (req, res) {

const id = require('mongodb').ObjectID(req.body.id)
    let updateQuery = {
        $set: { languages_known: req.body.add }
    }


    db.collection('students').updateOne({ _id: id }, updateQuery, function (err, result) {
        if (err) { throw err }
        console.log("updated")
    })
})