У меня есть фид данных с стороннего сервера, который я втягиваю и конвертирую в JSON. В фиде данных никогда не будет сгенерировано автоматически сгенерированное мной _id
s mongoDB, но есть уникальный идентификатор, называемый vehicle_id
.Почему я не могу объединить обычный объект в Mongo Document?
Функция, приведенная ниже, заключается в том, что обработка данных с помощью объекта json и копирование его значений в документ mongo, если есть документ mongo с тем же vehicle_id
.
function update_vehicle(fresh_event_obj) {
console.log("Updating Vehicle " + fresh_event_obj.vehicleID + "...");
Vehicle.find({ vehicleID: fresh_event_obj.vehicleID }, function (err, event_obj) {
if (err) {
handle_error(err);
} else {
var updated = _.merge(event_obj[0], fresh_event_obj);
updated.save(function (err) {
if (err) {
handle_error(err)
} else {
console.log("Vehicle Updated");
}
});
}
});
}
Структуры event_obj[0]
и fresh_event_obj
идентичны, за исключением того, что event_obj[0]
имеет _id
и __v
в то время как «нормальный» объект не делает.
Когда я бегу _.merge на этих двух, или даже свою собственную рекурсивную функцию, которая просто копирует значения от последнего к первому, ничто в updated
объект не отличается от event_obj[0]
, несмотря на fresh_event_obj
имеющие все новые значения.
Кто-нибудь знает, что я делаю неправильно? Я чувствую, что это очевидно, и я просто не вижу его.
ли ваша схема имеет записи для любых свойств 'fresh_event_obj' это сделает g для вставки? – laggingreflex
Вы, кажется, используете loadash, и в этом случае [проверьте этот вопрос] (http://stackoverflow.com/questions/25448343/lodash-merge-with-mongoose). Попробуйте изменить '_.merge' на' _.extend' – laggingreflex
@laggingreflex Я пробовал ._extend безрезультатно. У меня такая же проблема. Ничего не меняется в «обновленном» объекте. У моей схемы еще нет записей, в настоящее время для 'strict' установлено значение false. Однако, даже если это проблема, моя проблема в том, что '_.merge' или даже рекурсивно просто установление значений объекта, равных друг другу, похоже, не работает. Я делаю 'JSON.stringify' из 3 задействованных объектов и показывает, что проблема существует до того, как я даже доберусь до' .save', объекты просто не объединяют их значения. – BumbleShrimp