мангуст пост без дублирования - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь просмотреть запись / создание, в которой не допускается наличие нескольких экземпляров в базе данных (поэтому нет дубликатов).Я посмотрел на updateOne с {upsert:true}, и это не сработает для меня, потому что это работает, только если у вас есть определенный набор данных.

пример данных:

cat:{
    name: "jim",
    age: 8
}

пример модели:

cat:{
    name: String
}

код, который у меня был:

object.updateOne(req.body,req.body,{upsert:true},function(err,object){
    if(err) console.log(err);
    res.json(object);
})
}else{
    res.json('error: type: '+ req.params.type + 'not found !');
}

, но это работает, только если я добавлю 'age' к своей модели.из-за политики {strict:true} на updateOne.и когда я использую сообщение, я получаю несколько экземпляров одного и того же объекта.

, так что, надеюсь, кто-то может мне помочь.(и если кто-то знает лучший заголовок для этой проблемы, пожалуйста, прокомментируйте его ниже).Я не знал, как описать мою проблему одним предложением.

(имейте в виду, что на самом деле у меня есть набор данных со 100+ атрибутами и мне нужно только 60).просто добавление возраста не поможет моему набору данных.потому что тогда у меня есть 40 неиспользуемых значений в моем документе.

Редактировать:
после просмотра кода, опубликованного в качестве ответа ниже, я заметил, что допустил ошибку в своем собственном коде.Вот как должен выглядеть код:

  object.updateOne({},req.body,{upsert:true},function(err,object){
        if(err) console.log(err);
        res.json(object);
    })
    }else{
        res.json('error: type: '+ req.params.type + 'not found !');
    }

1 Ответ

0 голосов
/ 12 октября 2018

Пожалуйста, попробуйте использовать strict:false в update запросе.Они могут помочь решить вашу проблему.

var data = { fieldOne: 'Test2', fieldTwo: 'Test3' };
var opts = {
  upsert: true,
  runValidators: false,
  strict: false
};
Model.update({}, data, opts)
  .then((success) => {
    //success
  }).catch(() => { 
    //error 
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...