Meteor.js&Collection2:更新在子模式中插入新对象的方法
Meteor.js & Collection2: Update Method that Inserts New Object in subschema
上下文
我有一个收藏("场地")。我试图允许用户将新对象("房间"-定义为子模式)添加到场所对象的实例中。每个房间都应该有一个唯一的id(使用collection2模式中的autovalue)。
问题/我尝试了什么
我尝试了两种方法:
- Venues.insert-尝试创建一个新的整个Venue实例,而不是向roomPricing子架构添加新行
- Venues.update-使用"$set:params"抛出
Exception while invoking method 'addRoom' MongoError: Cannot update 'roomPricing' and 'roomPricing.roomId' at the same time
。如果我从集合中删除Id,应用程序将更新"现有"房间值,而不是创建房间的"新"实例
总之,我需要一个方法来更新"parent"对象(场所),同时在"room"子模式中创建新的"child"对象
系列
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});
}
相关文章:
- 查找关键字并创建新对象
- 创建新对象时,为什么要更新旧对象
- 为什么要使用立即调用的函数来创建新对象
- 剑道网格-插入具有外部列的新对象失败
- 将原型调用为新对象中的另一个原型
- 将新对象添加到本地存储
- $$hashKey在Angular中push()新对象时未生成新值
- 从分析类传递现有对象,否则创建一个新对象
- 如何用javascript,phonegap(cordova)将json对象插入sqlite表中
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- Will my'新对象'在套接字断开连接时被垃圾收集
- 从数组javascript创建新对象
- 为新对象添加函数,将对象添加到数组中.理解困难'这'关键字
- Javascript循环并插入新对象
- 如何在每个对象的末尾插入具有变量和值的新对象
- 将新数据项插入对象
- 如何在for循环中的新对象中插入数据
- Meteor.js&Collection2:更新在子模式中插入新对象的方法
- Json-在数组元素之间插入一个新对象
- Firebase push -删除唯一对象并插入新对象(基本上覆盖内容)