我是mongoose和mongodb的新手,一直在尝试用一堆图片帖子来连接我的用户。我读了很多关于mongoose populate的文章,但我总是得到一些空图像[]。
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true
},
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
images: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Image'
}
]
});
module.exports = mongoose.model('User', userSchema);
const mongoose = require('mongoose');
const imageSchema = new mongoose.Schema({
id: mongoose.Schema.Types.ObjectId,
image: {
type: String,
required: true
},
description: {
type: String,
required: true
},
})
module.exports = mongoose.model('Image', imageSchema);
const getOne = async (userId) => {
let lastTenImages = await User.findById(userId).populate('images').lean();
console.log(lastTenImages.images);
// return lastTenImages
}
我也使用了mongoose.Types.ObjectId而不是Schema,但是仍然得到了相同的结果--一个空数组
发布于 2021-04-30 02:28:30
在我看来,您应该丢弃id部分,它不能作为到用户模型的链接。换句话说,试着这样做:
const imageSchema = new mongoose.Schema({
image: {
type: String,
required: true
},
description: {
type: String,
required: true
},
})我认为这应该填充正确的数组。
此外,当您获得值时,您将获得一个对象数组。因此,您需要在其上进行映射。lastTenImages.images不会产生任何东西。
https://stackoverflow.com/questions/67013045
复制相似问题