首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Koa.js总是找不到404

Koa.js总是找不到404
EN

Stack Overflow用户
提问于 2018-09-28 16:33:52
回答 1查看 964关注 0票数 1

我在Koa中开发,我使用Firebase进行消息传递,因为它是实时数据库。当我想要从firebase获取消息时,我得不到它,但在console.log()中它会显示给我。

这是我的getConversation函数(消息)

代码语言:javascript
复制
async getConversation(conversationName, callback) {
    var ref = await admin.database().ref(`messages/${conversationName}`)
    await ref.on('value', (snapshot, prevChildKey) => {
        var newPost = snapshot.val()
        let values = Object.values(newPost)
        callback(values)
    })
}

然后在另一个控制器中调用它,如下所示

代码语言:javascript
复制
async getMessages(ctx) {
    const id = ctx.params.id

    const nameOfConversation = await ctx.db.Conversation.findById(id)

    await firebaseIndex.fbController.getConversation(nameOfConversation.name, response => {
        console.log(response)
        ctx.body = response //TODO
    })

}

最后,我把它称为路由。

代码语言:javascript
复制
router.get('/getConversation/:id', middlewares.isAuthenticate, controllers.userConversation.getMessages)

我总是找不到身体。有人知道我怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-28 19:08:30

我解决了。

代码语言:javascript
复制
async getMessages(ctx) {
    const id = ctx.params.id

    const nameOfConversation = await ctx.db.Conversation.findById(id)

    ctx.body = await new Promise((resolve, reject) => {
        firebaseIndex.fbController.getConversation(nameOfConversation.name, async response => {
            resolve(response)
        })
    })
}

ctx.body必须有一个承诺。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52551395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档