我是否有可能与 mongoose 7.0.4 参考系统存在兼容性/配置问题

问题描述 投票:0回答:1

我正在尝试完成 Dave Grey 的 MERN 堆栈代码并在以下问题中运行:

我的 POST 请求卡在“Note.create”行,我从未收到回复。 Try catch 块不会抛出任何错误。

POST Method
const createNewNote = asyncHandler(async (req, res) => {
    const { user, title, text } = req.body

    // Confirm data
    if (!user || !title || !text) {
        return res.status(400).json({ message: 'All fields are required' })
    }
    console.log("Data Confirmed")

    // Check for duplicate title
    const duplicate = await Note.findOne({ title }).lean().exec()

    if (duplicate) {
        return res.status(409).json({ message: 'Duplicate note title' })
    }
    console.log("No duplicates")

    // Create and store the new note
    console.log("Starting creation")
        
        const useruser = await User.findById(user).exec()
        console.log(useruser)
        
        const noteObject = {"user" : useruser._id, title, text}
        const note = await Note.create(noteObject)
 
    
    console.log("End of Note.create")
    if (note) { // Created 
        return res.status(201).json({ message: 'New note created' })
    } else {
        return res.status(400).json({ message: 'Invalid note data received' })
    }

})

这些分别是我的 User 和 Note 模式:

USER Schema
const mongoose = require('mongoose')

const userSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    roles: [{
        type: String,
        default: "Employee"
    }],
    active: {
        type: Boolean,
        default: true
    }
})

module.exports = mongoose.model('User', userSchema)

--------------------------------------------------------
//NOTE Schema
const mongoose = require('mongoose')
const AutoIncrement = require('mongoose-sequence')(mongoose)

const noteSchema = new mongoose.Schema(
    {
        user: {
            type: mongoose.Schema.Types.ObjectId,
            required: true,
            ref: 'User',
        },
        title: {
            type: String,
            required: true
        },
        text: {
            type: String,
            required: true
        },
        completed: {
            type: Boolean,
            default: false
        },
    },
    {
        timestamps: true
    }
)

noteSchema.plugin(AutoIncrement, {
    inc_field: 'ticket',
    id: 'ticketNums',
    start_seq: 500
})

module.exports = mongoose.model('Note', noteSchema)

我的控制台记录直到: “发布/注释 数据确认 无重复 开始创作 { _id: new ObjectId("64440dcbf47f80931a244dd2"), 用户名:'DanD', 密码:'$2b$10$R7cbeKxN4d8wSNLtShZ4MOcwaNfdMApAdYDwYsVA2ofAfcUkju0fm', 角色:['管理员','所有者','经理'], 活跃:真实, __v: 0 } “ 此用户 ID 在我的 mongodb 数据库中,但我无法创建与关联用户的注释。我试图用谷歌搜索类似的问题,或者与 chatGPT 来回切换,但无济于事。

感谢您的宝贵时间!

repo 在 github 上公开但不起作用:https://github.com/gitdagray/mern_stack_course/blob/main/lesson_04/controllers/notesController.js

我尝试将不同类型的有效负载发送到端点,并采用“._id”方式直接从我尝试引用的对象中获取 id,但没有成功。

这是我的 json 有效负载,我正在使用 Postman: { “用户”:“64440dcbf47f80931a244dd2”, "title": "史密斯夫人的电脑", “文本”:“SSD 已关闭” }

node.js mongodb express mongoose post
1个回答
0
投票

根据您的

noteSchema
,您已经使用了
user

const noteSchema = new mongoose.Schema(
    {
        user: {
            type: mongoose.Schema.Types.ObjectId,
            required: true,
            ref: 'User',
        },
    }
    //...
)

所以,应该替换为

const noteObject = {user, title, text}
const note = await Note.create(noteObject)

因为它不包含在

noteSchema
useruser
不能创建
_id
属性。在这里,
Note.create()
将仅通过知道它的模式键来创建笔记,就像您使用的
user
.

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.