首页 > 解决方案 > 如何将数据附加到现有的 json

问题描述

我正在尝试检查具有输入用户 ID 的文档是否存在。如果确实如此,我只想将 ProjectName 附加到现有文档文件中,否则我想创建一个新文档。请帮助我将数据附加到现有文档中。先感谢您。

users.post('/createProject',function(Project, res, next){
  var Details = {
    User_Id:Project.body.userid,
    Project_Name: Project.body.ProjectName
  }
  MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("EMWorks");
    dbo.collection("projects").findOne(Project.body.userid)
      .then(user => {
        if(!user) {
          dbo.collection("projects").insertOne(Details, function(err, response) {
              if (err) throw err;
            console.log("***  DOCUMENTED INSERTED ***");
            res.send('Project Created');
          });
          }else{
            dbo.collection("projects").append(Details, function(err, response) {
              if (err) throw err;
              console.log("***  Data Appended ***");
              res.send('Project Created');
            });
          }
        })
        .catch(err => {
          res.send('error: ' + err)
        })      
    });
})

标签: reactjsmongodbmongoose

解决方案


由于您没有返回文档,因此如果您想返回文档,则可以使用.updateOne()和else 使用.findOneAndUpdate(),请尝试以下代码:upsert

users.post('/createProject', function (Project, res, next) {
    var Details = {
        User_Id: Project.body.userid,
        Project_Name: Project.body.ProjectName
    }
    MongoClient.connect(url, function (err, db) {
        if (err) throw err;
        var dbo = db.db("EMWorks");
        dbo.collection("projects").updateOne(
            { User_Id: Project.body.userid },
            { $set: { Project_Name: Project.body.ProjectName } },
            { upsert: true } 
            /** If no document matches with 'User_Id: Project.body.userid' then as specified 'upsert: true' will create a new document with filter & update parts combined. */
        ).then(resp => {
            if (resp.nupsertedId) {
                console.log("***  DOCUMENT INSERTED ***");
                res.send('Project Created');
            } else {
                console.log("***  Data Appended ***");
                res.send('Project Created');
            };
        }).catch(err => {
            res.send('error: ' + err)
        })
    });
})

推荐阅读