Javascript Meteor.js&;Collection2:在子模式中插入新对象的更新方法
上下文 我有一个收藏(“场地”)。我试图允许用户将新对象(“房间”——定义为子模式)添加到场地对象的实例中。每个房间都应该有一个唯一的id(在collection2架构中使用autovalue) 问题/我尝试过的Javascript Meteor.js&;Collection2:在子模式中插入新对象的更新方法,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,上下文 我有一个收藏(“场地”)。我试图允许用户将新对象(“房间”——定义为子模式)添加到场地对象的实例中。每个房间都应该有一个唯一的id(在collection2架构中使用autovalue) 问题/我尝试过的 var currentVenueId = this.params._id var params = { roomPricing: { roomName: roomName, sitCapacity: sitCapacity,
var currentVenueId = this.params._id
var params = {
roomPricing: {
roomName: roomName,
sitCapacity: sitCapacity,
}
}
Meteor.call('addRoom', currentVenueId, params);
//Method
Meteor.methods({
'addRoom': function (id, params) {
Venues.insert({
_id: id
},{
$set:params});
}
});
我尝试了两种方法:
异常:无法同时更新“roomPricing”和“roomPricing.roomId”
。如果我从集合中删除Id,应用程序将更新“现有”房间值,而不是创建房间的“新”实例Schema.RoomPricing = new SimpleSchema({
roomId: {
type: String,
autoValue: function(){
return Random.id();
},
optional: true
},
roomName: {
type: String,
max:50,
optional: true
}
}
// MAIN SCHEMA for the Venues colleciton.
Schema.Venues = new SimpleSchema({
venueName: {
type: String,
label: "Venue Name",
max: 200,
optional: false
},
roomPricing: {
type: Schema.RoomPricing,
optional: true
}
}
控制器和方法
var currentVenueId = this.params._id
var params = {
roomPricing: {
roomName: roomName,
sitCapacity: sitCapacity,
}
}
Meteor.call('addRoom', currentVenueId, params);
//Method
Meteor.methods({
'addRoom': function (id, params) {
Venues.insert({
_id: id
},{
$set:params});
}
});
最后,这就是我使用的-需要$push而不是$set
'addRoom': function (id, params) {
Venues.update({
_id: id
},{
$push:params});
}