好的,所以我有一个带有eventSchema的events.js文件:
var eventSchema = mongoose.Schema({
name:{
type: String,
//required: true
venue:{
}
});
和具有场地架构的venue.js:
var mongoose = require(' mongoose');
var venueSchema = mongoose.Schema(
{
name:{
type: String,
//required: true
},
postcode:{
type: String,
//required: true
},
town:{
type: String,
//required: true
}
});
我的问题是如何才能拥有这样的场所。事件架构中的字段链接到场地架构。因此,当您创建新活动时,您只能从场地列表中添加场地。提前致谢!
答案 0 :(得分:1)
您可以通过ID链接它。 您不必添加所有场地'事件架构中的字段。
var eventSchema = mongoose.Schema({
name:{
type: String,
//required: true
},
venue_id: Schema.Types.ObjectId,
});
由于你使用的是Mongoose,你可以创建像
这样的字段venue_id: { type: Schema.Types.ObjectId, ref: 'Venue' }
使用datatype方法。
人口是使用来自其他集合的文档(即文档)自动替换文档中指定路径(即venue_id)的过程与venue_id匹配。
您可以像
一样使用它event.
findOne({ name: 'somename' }).
populate('venue').
exec(function (err, event) {
if (err) return handleError(err);
});
它将返回带有与venue_id匹配的场地文档的事件doc,而不仅仅是venue_id。
答案 1 :(得分:0)
@godsnam给出的答案是正确的,但是当你想在模式中使用引用时。如果您不想使用引用,那么这可能会对您有所帮助。
您可以在eventSchema中链接您的venueSchema,只需写下如下。
var venueSchema = mongoose.Schema(
{
name: {
type: String,
//required: true
},
postcode: {
type: String,
//required: true
},
town: {
type: String,
//required: true
}
});
var eventSchema = mongoose.Schema({
name: {
type: String,
//required: true
},
venue: venueSchema
});