Tôi là người mới đến MongoDB và Backbone, vì vậy tôi cố gắng hiểu chúng, nhưng rất khó. Tôi có một vấn đề lớn, lớn: Tôi không thể hiểu cách thao tác các thuộc tính trong Backbone.Model để sử dụng trong Views chỉ những gì tôi cần. Nhiều cụ thể - Tôi có một mô hình :MongoError: không thể thay đổi _id của tài liệu
window.User = Backbone.Model.extend({
urlRoot:"/user",
idAttribute: "_id",
defaults: {
_id: null,
name: "",
email: "[email protected]"
}
});
window.UserCollection = Backbone.Collection.extend({
model: User,
url: "user/:id"
});
Và tôi có một Xem:
beforeSave: function(){
var self = this;
var check = this.model.validateAll();
if (check.isValid === false) {
utils.displayValidationErrors(check.messages);
return false;
}
this.saveUser();
return false;
},
saveUser: function(){
var self = this;
console.log('before save');
this.model.save(null, {
success: function(model){
self.render();
app.navigate('user/' + model.id, false);
utils.showAlert('Success!', 'User saved successfully', 'alert-success');
},
error: function(){
utils.showAlert('Error', 'An error occurred while trying to save this item', 'alert-error');
}
});
}
tôi phải sử dụng 'đặt' dữ liệu phương pháp whit từ bất kỳ lĩnh vực ngoại trừ '_id', do đó, nó phải là smth như:
{"name": "Foo", "email": "[email protected]"}
Nhưng mỗi lần, không phụ thuộc vào những gì tôi làm nó gửi
{**"_id": "5083e4a7f4c0c4e270000001"**, "name": "Foo", "email": "[email protected]"}
và lỗi này từ máy chủ:
MongoError: cannot change _id of a document old:{ _id: ObjectId('5083e4a7f4c0c4e270000001'), name: "Foo" } new:{ _id: "5083e4a7f4c0c4e270000001", name: "Bar", email: "[email protected]" }
Github liên kết: https://github.com/pruntoff/habo
Cảm ơn trước!
Khi bạn gọi 'model.save() 'là một POST đang được thực hiện hoặc một PUT? – InPursuit
nó là PUT thực hiện. 'app.get ('/ user /: id', usr.findById); app.put ('/ user /: id', usr.updateUser); ' – Pruntoff
Nếu xương sống đang thực hiện PUT khi bạn gọi' save' thì idAttribute của mô hình (_id trong trường hợp của bạn) sẽ không được gửi đi. Bạn có thể gọi 'isNew()' trên mô hình của bạn trước khi 'save()' và xác minh rằng nó trả về 'false'? Đồng thời xác minh rằng 'this.model.id' không phải là null hoặc undefined trước khi gọi' save() ' – InPursuit