【发布时间】:2015-12-08 11:32:44
【问题描述】:
我在猫鼬中有这两种模式:
预订模式
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bookingSchema = new Schema({
bookingNO: { type: Number, unique: true},
plateNO: String,
startDate: String,
bookedTime: Number,
creator: {type: Schema.Types.ObjectId, ref: 'User'}
});
var Booking = mongoose.model('Booking', bookingSchema);
用户架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
username: String,
password: String,
balance: Number,
bookings: [{type: Schema.Types.ObjectId, ref: 'Booking'}]
});
var User = mongoose.model('User', userSchema);
这个设计的问题是:
某些预订不是由用户创建的 - 在这种情况下,预订中的“创建者”字段将为空。同样,一些用户不一定包含预订 - 他们可能会在以后。
我正在考虑从 2 个模式中删除创建者和预订字段,并在 Mongoose 中使用 { strict: false } 选项。这会是最好的选择吗?
如果是这种情况,我必须将“creator”属性添加到 Booking 模型,并将“bookings”属性添加到 User,然后将其保存到数据库中。
最重要的是,由于我已经从 Schema 中删除了引用,在使用 { strict: false } 的情况下如何创建引用?
提前致谢。
【问题讨论】:
标签: node.js mongodb mongoose database-schema nosql