Это должно быть просто, но это удивительно сложно и крайне сложно. Я пытаюсь перезаписать поле «Объект» в mongodb с новым объектом, который пользователь создает на моей клиентской веб-странице. Я подтвердил, что все другие поля, которые я передаю в операцию обновления, фактически обновляются, за исключением объекта javascript. Вместо того, чтобы это обновление с объектом я передаю (Пока я подтверждено заселяется с объектом я передаю через), он просто обновляет его обратно {} вместо Whats передается:Переписать объект в mongodb
{ nodes:[ { w: 120, h: 80,type: 'InHive',left: 184,top: 90,text: 'item',query: 'hey',name: 'sample',id: '7686132d-6fcf-4a3b-baa2-b1c628e0b2d6' } ], edges: [], ports: [],groups: [] }
Когда я пытаю для обновления поля данных вне метеорного метода, непосредственно из интерфейса консоли mongo, он успешно перезаписывает это поле с помощью объекта javascript. Что я делаю неправильно здесь, потому что я не могу, чтобы жизнь меня показала это?
Метод Сервера
'updateOneWorkflow': function(id, field, object) {
this.unblock;
if (Meteor.userId()) {
var _username = Meteor.user().username;
MYCOLLECTION.update({
_id: id
}, {
$set: {
[field]: object, //this just gets reset back to {} whenever this update method is called
"metadata.last_modified_dt": new Date(), //this gets updated
"metadata.modified_by": Meteor.userId(), //this gets updated
'metadata.modified_by_username': _username //This gets updated
}
});
} else {
throw new Meteor.Error(403, "You are not authorized to perform this function");
}
}
Client Вызов:
var _jsonformat = toolkit.exportData();
var currentid = Session.get('rulesRowClicked')._id;
console.log(_jsonformat);
Meteor.call('updateOneWorkflow' , currentid, 'data', _jsonformat, function(err, res){
if(err){
toastr.error('Failed to save result ' + err);
}
else{
toastr.success('Saved workflow');
}
});
Каковы значения/типы «поля» и «объект» перед операцией обновления? можете ли вы показать нам, что вы получите, если вы запустите console.log (field)/console.log (object)? –
Если вы посмотрите на код клиента, он показывает, что передается методу выше. Поле - это «данные», а консольный журнал как на сервере, так и на клиенте показывает, что объект JSON заполняется вместе с значением поля. – user2100493
Попробуйте 'console.log'' object' var внутри вашего метода на сервере – Khang