Обновить документ со многими полями - PullRequest
0 голосов
/ 15 января 2020

У меня есть этот документ в пн go дБ

 { _id: 5e1f159e03ffa0f3c79e17ff,
    issue_title: 'test ',
    issue_text: 'tttttttttttttest',
    created_by: 'ahmad',
    created_on: 2020-01-15T13:37:32.119Z,
    updated_on: 2020-01-15T13:37:32.119Z,
    assigned_to: '',
    status_text: '',
    open: true }

Я хочу, чтобы пользователь обновил столько полей, сколько он хочет за один снимок.

Я не знаю количество полей, которые будут обновлены в Advance.

Я хочу отправить запрос, подобный этому updated_issue = { id: '_id', open:false, ...} Итак, будут изменены только поля в updated_issue.

Мой код выглядит как это:

...
 updated_issue = { id: '_id', open:false, ..}

...
 var keys = Object.keys(update_issue);

 db.collection(project).updateOne({_id:id}, 
     { for(var k  of keys) { $set: { k: update_issue[k]} } },  /* problem is this line */
     {new:true}, (err,data )=>{ 
                   res.tyep('text').send('success');
                   });
...

Я хочу, чтобы l oop бросил объект и присвоил его значения соответствующим полям в БД. без изменения других полей

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Ответ состоял в том, чтобы подготовить объект с помощью $set, а затем обновить do c.



...
 updated_issue = { id: '_id', open:false, ..}

...
 var keys = Object.keys(update_issue);
 cost tmp = {$set:{}}; for(var k of keys) { tmp.$set[k] = update_issue[k] }; 

 db.collection(project).updateOne({_id:id} , tmp , {new:true}, (err,data )=>{ 
                   res.tyep('text').send('success');
                   });
...



0 голосов
/ 15 января 2020

Я полагаю, что вы можете выполнить обновление, просто используя 'update_issue' вместо '{for (var k of keys) {$ set: {k: update_issue [k]}}}', потому что это объект.

updated_issue = { id: "_id", open: false, ...};

var keys = Object.keys(update_issue);

db.collection(project).updateOne(
  { _id: id },
  update_issue ,
  { new: true },
  (err, data) => {
    res.tyep("text").send("success");
  }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...