【发布时间】:2021-05-08 16:13:11
【问题描述】:
目前正在构建笔记应用项目,我们可以在其中保存笔记,也可以编辑和删除笔记.. 突然卡在这里...我想查询( findById )与用户 ID 匹配的所有文档。在这种情况下,我在 Notes Schema 中将用户 ID 引用为 postedBy ..
这是我的用户 schmea 或模型...
import mongoose from 'mongoose'
const userSchema = new mongoose.Schema({
username: {
type: String,
required: [true, 'please provide username'],
},
email: {
type: String,
required: [true, 'please provide email'],
unique: true,
index: true,
},
password: {
type: String,
required: [true, 'please provide password'],
},
accountCreatedAt: {
type: String,
default: Date,
},
})
const User = mongoose.model('User', userSchema)
export default User
这是我的笔记架构,我将用户 ID 引用为 ref:
import mongoose from 'mongoose'
const noteSchema = new mongoose.Schema(
{
title: {
type: String,
required: [true, 'please provide title'],
unique: true,
trim: true,
},
text: {
type: String,
trim: true,
required: [true, 'Please provide text'],
},
lable: {
type: String,
required: [true, 'please provide lable'],
},
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true,
},
},
{
timestamps: { createdAt: 'created_At', updatedAt: 'updated_At' },
}
)
const Note = mongoose.model('Note', noteSchema)
export default Note
路由和控制器功能:
noteRoutes.get('/getNotesByUserID/:_id', noteController.getNotesByUserID)
export const getNotesByUserID = async (req, res, next) => {
try {
const id = req.params._id
const userNotes = await Note.findById({ postedBy: id })
res.status(200).json({
status: 'success',
data: {
userNotes,
},
})
} catch (error) {
res.status(400).json({
status: 'error',
data: {
message: error.message,
},
})
}
}
当我尝试在邮递员中对此进行测试时,我收到以下消息:
*"message": "Cast to ObjectId failed for value \"{ postedBy: '609554f9560327264b23d3fe' }\" at path \"_id\" for model \"Note\""*
提前谢谢...
【问题讨论】: