问题描述
我正在尝试将每条记录附加到创建它的用户, 并且每个用户都附上了他们的记录。 这是我的架构:
1.记录模式:
const mongoose = require('mongoose')
const RecordsSchema = new mongoose.Schema(
{
Title: { type: String,required: true },postedby:[{
type: mongoose.Schema.Types.ObjectId,ref: 'user'
}],Author: { type: String,required: true},ISBN: { type: String,Review: { type: String },SelectedFile: { type: String },Likes: { type: Number,default:0},Date: { type: Date,default: Date.now()}
});
module.exports = Records = mongoose.model('record',RecordsSchema','record');`
这是用户架构:
const mongoose = require('mongoose')
const userSchema = new mongoose.Schema(
{
username: { type: String},email: { type: String,required: true,unique:true},records:[{
type: [mongoose.Schema.Types.ObjectId],ref: 'record' }],password: { type: String,default: Date.now(),immutable: true }
});
module.exports = User = mongoose.model('user',userSchema,'user');
获取记录的快速路径:
router.get('/postedby/',(req,res) => {
Records.find(req.params.id)
.populate('postedby')
.exec()
.then(post =>{
if (!post) {
return res.status(400).json({ msg: 'Add Posts' });
}
else return res.json(post);
}).catch (err => console.error(err))
});
路线结果:
{
"postedby": [],"Likes": 0,"_id": "5fed8c12a4fb2c1e98ef09f6","Title": "New Age","Author": "Situma Prisco","ISBN": "23422","SelectedFile": "","Review": "","Date": "2020-12-31T08:30:10.321Z","__v": 0
},
我在填充的用户字段(posteddby) 上得到一个空白数组。 请帮忙,我做错了什么?是的,我确实有一个用户登录
解决方法
你离得太近了。
在您的架构定义中,postedby
字段本身是一个数组。因此,您可以简单地将其定义为:
postedby:[{
type: mongoose.Schema.Types.ObjectId,ref: 'user'
}]
确保 ObjectID 正确存储在 postedby
数组中。
此外,您正在尝试根据 ID 查找单个记录,因此您可以使用 findById(req.params.id)
或 findOne({_id:req.params.id})
返回单个文档。