我正在使用MEAN堆栈,users
可以构建charts
。
where `user, chart` = mongoose schemas
我的问题是如何将用户创建的图表与用户本身相关联,以便在管理页面上显示过去创建的图表?
var ChartSchema = new Schema({
name: [String],
type: [String],
data: [Array]
});
var UserSchema = new Schema({
name: String,
email: { type: String, lowercase: true },
role: {
type: String,
default: 'user'
},
hashedPassword: String,
provider: String,
salt: String,
twitter: {},
google: {}
});
答案 0 :(得分:4)
通过在ChartSchema中添加属性或在UserSchema中添加图表数组。 在两个架构上添加和_id字段。
ChartSchema = new Schema({
// ...
_creator: { type: Number, ref: 'User' },
});
或者
UserSchema = new Schema({
// ...
chartsCreated: [{ type: Number, ref: 'Chart' }]
});
假设ChartSchema注册为Chart
,UserSchema注册为User
。
答案 1 :(得分:1)
或许您可以在ChartSchema中添加一个名为created的属性,以便您可以按照发布时间显示某人的图表:
var ChartSchema = new Schema({
created: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
mongoose.model('Charts', ChartSchema);
和
var UserSchema = new Schema({
// ...
charts: [{
type: Schema.ObjectId,
ref: 'Charts'
}]
});
mongoose.model('User', UserSchema);
在控制器文件中,例如:
Charts.find().sort('-created').populate('user', 'displayName').exec(function (err, charts) {
// ...
});
要了解详情,您可以看到MEAN Stack Docs和Mongoose Docs
答案 2 :(得分:0)
在您的用户架构中添加新的字段chartData,您无需更改图表架构。
var UserSchema = new Schema({
name: String,
email: { type: String, lowercase: true },
role: {
type: String,
default: 'user'
},
hashedPassword: String,
provider: String,
salt: String,
twitter: {},
google: {},
chartData : [ChartSchema]
});
并导出您的架构
mongoose.model('User',UserSchema)