如何修复 Mongoose 模型.创建被卡住永远

wj8zmpe1  于 2023-11-19  发布在  Go
关注(0)|答案(2)|浏览(155)

我不明白为什么 Mongoose 不能完成这个模型。
相同的连接与其他控制器功能配合良好
vscode
postman
我试图创建一个新的文档,但我的代码只是卡住了,我不能得到任何错误,以找出什么是错的

const createNote = async (req, res) => {
try {
    const { user, title, text } = req.body

    if (!user || !title || !text) {
        return res.status(400).json({ text: 'all fileds are required' })
    }
    console.log('got here')
    const userId = new mongoose.Types.ObjectId(user)

    const newNote = await Note.create({ user: userId, title, text })
    console.log("got here 1")

    if (!newNote) {
        return res.status(400).json({ message: 'note not created' })

    }

    res.status(200).json({ message: `new note created for ${user} ` })
}
catch (e) {
   console.error("error handling note creation: ", e);
    res.status(500).send()
}
}

个字符

z9zf31ra

z9zf31ra1#

所以我看不到Note的模式,但我假设user字段应该具有Ref<User>类型,也就是说引用了您在其他地方定义的User模型。但在您提供的代码示例中,似乎您给了它一个mongoID字符串。
如果你添加了下面这行代码,脚本应该会开始工作。这会将你的用户变量从mongo ObjectID的字符串表示转换为真正的mongo ObjectID。:
user = new mongoose.Types.ObjectId(user);
然而,我认为你的主要问题实际上只是你没有得到一个错误打印出来。我的猜测是asyncHandler使错误消失了。如果你把你的函数体放在一个try catch块中,在catch中有一个console.error,你应该能够在将来看到这个错误。

const createNote = asyncHandler(async (req, res)=>{
    try{

        // your code here

    } catch(e){

        console.error("error handling note creation: ", e);
        res.status(500).send()

    }

})

字符串
这主要是猜测,因为我没有太多的上下文。如果这不能解决问题,请发布Note模型的模式以及您得到的任何错误提示。

rbpvctlc

rbpvctlc2#

我建议处理Promise,这样你就可以试着弄清楚到底发生了什么。

相关问题