为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2021-04-06 17:14:04
需要从我的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    })})});
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

在收到来自同类用户的一些指导后,我设法使它开始工作。我不知道这样做是否正确,但是我的代码可以按我的意愿工作,所以我决定更新对我有用的东西。我将中间件更新为此


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

    Message.find({})

    .then(messages => {

        res.render("support", {messages}); // I rendered the template 

})

    .catch(err => {

        res.json({

            confirmation: 'fail',

            message: err.message

        })

    })   

});

然后在我的EJS文件中,我简单地添加了它


<p><%= messages[0].sender %></p>

这对我有用


查看完整回答
反对 回复 2021-04-15
?
慕森王

TA贡献1777条经验 获得超3个赞

试试这个:


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


Message.find({}).exec()

.then(messages => {

    res.json({

        confirmation: 'success',

        data: messages

    })

})

.catch(err => {

    res.json({

        confirmation: 'fail',

        message: err.message

    })

})

});

第一件事:添加{}作为查询条件。猫鼬也许会接受空参数,但是我不确定它是如何处理的(我在文档中没有看到关于这种语法的任何提及)。


第二:findOne不兑现承诺。查询结果有一种方便的then方法,但我不确定catch。您应该执行exec()以获得js承诺。


查看完整回答
反对 回复 2021-04-15
?
aluckdog

TA贡献1847条经验 获得超7个赞

Marcin的评论会很好,或者,如果您不需要视图中的所有属性,则只能发送以下内容:


 res.json({

    confirmation: 'success',

    message: messages.body,

    sender: messages.sender

 })


查看完整回答
反对 回复 2021-04-15
  • 3 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信