2016-03-30 116 views
1

嵌套集合我有这样的收集和架构:更新/更新插入/插入到流星和MongoDB中

Words = new Mongo.Collection("words"); 

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: [Entry] 
    } 
}); 

Entry = new SimpleSchema({ 
    post: { 
    type: String 
    }, 
    elapsed_time: { 
    type: Number 
    }, 
    createdAt: { 
    type: Date 
    } 
}); 

Words.attachSchema(WordsSchema); 

我只是试图将条目添加到这个集合,通过UPSERT(或更新与更新插入=真),像这样:

Words.update({ 
     date: today, 
     owner: Meteor.userId() 
    }, { 
     $push: { 
     entries: { post: post, elapsed_time: elapsed_time, createdAt: new Date() } 
     } 
    }, { 
     upsert: true 
    }); 

即如果与日期(对象=今天存储为 'YYYY-MM-DD')和所有者= userId的存在,它只是增加了具体的条目。

但我做错了,因为我得到的错误:“条目是必需的”。

任何帮助或想法非常感谢!谢谢。

回答

1

我不确定这是什么问题。但我猜类型:[Entry]不受简单模式的支持。所以在这里你可以试试这两种方法来实现相同的功能。 1. Marge模式。

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: Array 
    } 
    "entries.$": { 
    type: Object 
    }, 
    "entries.$.post: { 
    type: String 
    }, 
    "entries.$.verified": { 
    type: Boolean 
    }, 
"entries.$.verified": { 
    type: Boolean 
    } 
}); 

2.通过使用$您可以单独两种模式

WordsSchema = new SimpleSchema({ 
    date: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    entries: { 
    type: Array 
    } 
    "entries.$": { 
    type: Entry 
    } 
}); 

Entry = new SimpleSchema({ 
    post: { 
    type: String 
    }, 
    elapsed_time: { 
    type: Number 
    }, 
    createdAt: { 
    type: Date 
    } 
});