我正在尝试使用用户填充记录模式,因此我可以为每条记录考虑一个用户。但是,我只得到一个空白数组。 这是我的架构:
1.记录模式:
const mongoose = require('mongoose')
const RecordsSchema = new
mongoose.Schema(
{
Title: { type: String, required: true
},
users:[{
type:
[mongoose.Schema.Types.ObjectId],
ref: 'users'
}],
Author: { type: String, required: true
},
ISBN: { type: String, required: true
},
Review: { type: String },
SelectedFile: { type: String },
Likes: { type: Number, default:0},
Date: { type: Date, default: Date.now()
}
});
module.exports = Records =
mongoose.model('records',
RecordsSchema');`
这是用户架构:
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: 'records'
}],
password: { type: String, required: true
},
Date: { type: Date, default: Date.now,
immutable: true }
});
module.exports = User =
mongoose.model('users',
userSchema);
特快路线:
router.get('/all', async (req, res) =>
{
try {
const records =await Records.find(
).sort({Date:-1})
.populate ('users')
.exec()
res.json(records);
} catch (err) {
console.error(err.message);
res.status(404).send('Server Error');
}
});
结果:
{
"users": [],
"Likes": 0,
"_id": "5fed8c12a4fb2c1e98ef09f6",
"Title": "New Age",
"Author": "Situma Prisco",
"ISBN": "23422",
"SelectedFile": "",
"Review": "",
"Date": "2020-12-31T08:30:10.321Z",
"__v": 0
},
填充后我得到一个空白数组。我做错了什么?
答案 0 :(得分:0)
对文档中的数组使用 populate 时必须指定 model
名称。
const records = await Records.find()
.sort({Date:-1})
.populate('users', '', 'users)
.exec()
填充语法:
DocumentQuery<Document[], Document, {}>.populate(path: any, select?: any, model?: any, match?: any, options?: any)