使用流星更新自动形式的对象时出错
Error when updating an object in auto-form with meteor
我已经查看了文档,但我无法理解这个问题。我有一个对象,我想使用 Auto-Form 和 Collections2 和 meteor 来更新。
//架构
Records = new Mongo.Collection('records');
var Schemas = {};
Schemas.Record = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
caption: {
type: String,
label: "Caption",
max: 200
},
text: {
type: String,
label: "Detailed text",
optional: true,
max: 1000
},
loc: {
type: Object,
optional: true,
blackbox: true
},
createdAt: {
type: Date,
autoform: {
type: "hidden"
},
autoValue: function() {
if (this.isInsert) {
return new Date;
}
else if (this.isUpsert) {
return {
$setOnInsert: new Date
};
}
else {
this.unset();
}
}
},
updatedBy: {
type: String,
autoValue: function() {
return Meteor.userId();
}
}
});
Records.attachSchema(Schemas.Record);
我有一个挂钩,因此我可以在更新之前分配对象
AutoForm.hooks({
insertCommentForm: {
before: {
insert: function(doc) {
doc.commentOn = Template.parentData()._id;
return doc;
}
}
},
updateRecordForm: {
before: {
update: function(doc) {
console.log("storing location data");
doc.loc = Session.get('geoData');
console.log(doc.loc);
return doc;
}
}
}
});
我收到这个错误。
Uncaught Error: When the modifier option is true, all validation
object keys must be operators. Did you forget $set
?
我不知道如何使用自动表单“$set”。
当您尝试更新 Mongo 中的文档时,当您只想更新某些字段时,您将使用 $set
修饰符。
Records.update({ _id: 1 }, { $set: { loc: { lat: 12, lng: 75 } } })
以上只会更新 loc
值。
Records.update({ _id: 1 }, { loc: { lat: 12, lng: 75 } })
以上将删除所有其他键,记录将只有 _id
和 loc
。
您的挂钩必须在 doc.$set
中设置 loc
键。
请使用以下代码更新您的挂钩,它应该可以工作:
updateRecordForm: {
before: {
update: function(doc) {
console.log("storing location data", doc);
doc.$set.loc = Session.get('geoData');
return doc;
}
}
}
我已经查看了文档,但我无法理解这个问题。我有一个对象,我想使用 Auto-Form 和 Collections2 和 meteor 来更新。
//架构
Records = new Mongo.Collection('records');
var Schemas = {};
Schemas.Record = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
caption: {
type: String,
label: "Caption",
max: 200
},
text: {
type: String,
label: "Detailed text",
optional: true,
max: 1000
},
loc: {
type: Object,
optional: true,
blackbox: true
},
createdAt: {
type: Date,
autoform: {
type: "hidden"
},
autoValue: function() {
if (this.isInsert) {
return new Date;
}
else if (this.isUpsert) {
return {
$setOnInsert: new Date
};
}
else {
this.unset();
}
}
},
updatedBy: {
type: String,
autoValue: function() {
return Meteor.userId();
}
}
});
Records.attachSchema(Schemas.Record);
我有一个挂钩,因此我可以在更新之前分配对象
AutoForm.hooks({
insertCommentForm: {
before: {
insert: function(doc) {
doc.commentOn = Template.parentData()._id;
return doc;
}
}
},
updateRecordForm: {
before: {
update: function(doc) {
console.log("storing location data");
doc.loc = Session.get('geoData');
console.log(doc.loc);
return doc;
}
}
}
});
我收到这个错误。
Uncaught Error: When the modifier option is true, all validation object keys must be operators. Did you forget
$set
?
我不知道如何使用自动表单“$set”。
当您尝试更新 Mongo 中的文档时,当您只想更新某些字段时,您将使用 $set
修饰符。
Records.update({ _id: 1 }, { $set: { loc: { lat: 12, lng: 75 } } })
以上只会更新 loc
值。
Records.update({ _id: 1 }, { loc: { lat: 12, lng: 75 } })
以上将删除所有其他键,记录将只有 _id
和 loc
。
您的挂钩必须在 doc.$set
中设置 loc
键。
请使用以下代码更新您的挂钩,它应该可以工作:
updateRecordForm: {
before: {
update: function(doc) {
console.log("storing location data", doc);
doc.$set.loc = Session.get('geoData');
return doc;
}
}
}