Как добавить данные в существующую json - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь проверить, существует ли документ с введенным идентификатором пользователя. Если это так, я хочу добавить только 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)
        })      
    });
})

1 Ответ

0 голосов
/ 05 февраля 2020

Поскольку вы не возвращаете документ обратно, вы можете использовать .updateOne () с upsert, иначе, если вы хотите вернуть документ обратно, используйте .findOneAndUpdate () , попробуйте ниже код:

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)
        })
    });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...