无法将MongoDB中的JSON数据转换为我的代码中可用的变量

需要从我的MongoDB中提取数据,并使用expressJS和mongoose在我的Web应用程序中用作变量。当我使用find()函数请求所有数据时,我以JSON形式获取此数据没有问题。但是现在我需要能够访问该集合,因为将其数据用作我项目中的变量。请帮助我,我知道我丢失了一些东西。


router.get('/support', (req, res) => {


Message.find()

.then(messages => {

    res.json({

        confirmation: 'success',

        data: messages

    })

})

.catch(err => {

    res.json({

        confirmation: 'fail',

        message: err.message

    })

})

});


隔江千里
浏览 170回答 3
3回答

Qyouu

在收到来自同类用户的一些指导后,我设法使它开始工作。我不知道这样做是否正确,但是我的代码可以按我的意愿工作,所以我决定更新对我有用的东西。我将中间件更新为此router.get('/support', (req, res) => {&nbsp; &nbsp; Message.find({})&nbsp; &nbsp; .then(messages => {&nbsp; &nbsp; &nbsp; &nbsp; res.render("support", {messages}); // I rendered the template&nbsp;})&nbsp; &nbsp; .catch(err => {&nbsp; &nbsp; &nbsp; &nbsp; res.json({&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; confirmation: 'fail',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message: err.message&nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; })&nbsp; &nbsp;});然后在我的EJS文件中,我简单地添加了它<p><%= messages[0].sender %></p>这对我有用

慕森王

试试这个:router.get('/support', (req, res) => {Message.find({}).exec().then(messages => {&nbsp; &nbsp; res.json({&nbsp; &nbsp; &nbsp; &nbsp; confirmation: 'success',&nbsp; &nbsp; &nbsp; &nbsp; data: messages&nbsp; &nbsp; })}).catch(err => {&nbsp; &nbsp; res.json({&nbsp; &nbsp; &nbsp; &nbsp; confirmation: 'fail',&nbsp; &nbsp; &nbsp; &nbsp; message: err.message&nbsp; &nbsp; })})});第一件事:添加{}作为查询条件。猫鼬也许会接受空参数,但是我不确定它是如何处理的(我在文档中没有看到关于这种语法的任何提及)。第二:findOne不兑现承诺。查询结果有一种方便的then方法,但我不确定catch。您应该执行exec()以获得js承诺。

aluckdog

Marcin的评论会很好,或者,如果您不需要视图中的所有属性,则只能发送以下内容:&nbsp;res.json({&nbsp; &nbsp; confirmation: 'success',&nbsp; &nbsp; message: messages.body,&nbsp; &nbsp; sender: messages.sender&nbsp;})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript