node.js - Mongoose/ Express Populate issue
问题描述
I'm trying to populate the records schema with users, So i can account for a user for each record. However, i am only getting a blank array back. Here are my schemas:
1.The Records schema:
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');`
Here is the The user Schema:
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);
The express route:
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');
}
});
Result:
{
"users": [],
"Likes": 0,
"_id": "5fed8c12a4fb2c1e98ef09f6",
"Title": "New Age",
"Author": "Situma Prisco",
"ISBN": "23422",
"SelectedFile": "",
"Review": "",
"Date": "2020-12-31T08:30:10.321Z",
"__v": 0
},
I'm getting a blank Array After populating. What am I doing wrong?
解决方案
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)
推荐阅读
- python - 如何解码这个字符串?-> b'Katastr\\xc3\\xa1ln\\xc3\\xad mapa'
- c - "MODULE_INFO(retpoline, "Y")" 宏是什么?
- android - Activity 中带有 setOnClickListener 的 MyAdapter 确实有效,但在 Fragment 中无效
- c# - 使用空数据表序列化 DataSet 会丢失所有列信息
- matlab - MATLAB glmnet 中的逻辑回归参数有什么问题?
- c++ - Qt Quick 2:创建和添加共享库
- r - 是否有 R 函数来转换数据框
- sql - 将数字数据类型划分为不同的缩放数字类型
- java - 从 Git Source 文件夹获取 jar 文件
- azure - 在 B2C 中成功注册后无法授予对 API 的访问权限