我的数据库中有三个集合:应用,评论和用户。
应用会有多个评论,评论会有一个用户,用户会有多个评论。
我确实需要他们都绑在一起,我正在努力。我已经能够将评论附加到用户(反之亦然),但我无法将评论附加到应用程序。我认为这个动作需要在POST到数据库进行审查。
我确实需要appId(并且它已存储在评论正文中),但我无法正确识别和更新数据库中的正确集合(应用程序)。我似乎在围绕这个旋转自己。
基本上,我需要参考审核所针对的应用程序以及审核发布时审核的用户。我确实拥有所有型号"正确"引用其他集合(当您使用消息和用户组件演示时)。
有人能指出我正确的方向吗?这是我到目前为止的POST代码。
// SAVE A REVIEW TO DATABASE
router.post('/', function(req, res, next) {
var decoded = jwt.decode(req.query.token);
User.findById(decoded.user._id, function(err, doc) {
if (err) {
return res.status(404).json({
title: 'An error occurred',
error: err
});
}
var review = new Review({
content: req.body.content,
rating: req.body.rating,
app: req.body.appId,
user: doc
})
Application.findById(req.body.appId, function(err, doc) {
if (err) {
return res.status(404).json({
title: 'An error occurred',
error: err
});
}
review.save(function(err, result) {
if (err) {
return res.status(404).json({
title: 'An error occurred',
error: err
});
}
review.update(function(err, result) {
if (err) {
return res.status(404).json({
title: 'An error occurred',
error: err
});
}
doc.reviews.push(result);
doc.save();
res.status(201).json({
message: 'Saved review',
obj: result
});
});
});
});
模型:
Review Model:
var schema = new Schema({
content: {type: String, required: true},
rating: {type: Number},
dateCreated: {type: String},
app: {type: Schema.Types.ObjectId, ref: 'Application'},
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
Application Model:
var schema = new Schema({
name: {type: String, required: true},
description: {type: String},
reviews: [{type: Schema.Types.ObjectId, ref: 'Review'}],
})
User Model:
var schema = new Schema({
firstName: {type: String, required: true},
lastName: {type: String, required: true},
password: {type: String, required: true},
passwordConfirm: {type: String, required: true},
email: {type: String, required: true, unique: true},
reviews: [{type: Schema.Types.ObjectId, ref: 'Review'}]
});
也许我对此采取了错误的方式,但我似乎很丢失。
提前谢谢大家。