Koa.js всегда получает не найдено 404 - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю в Koa и использую Firebase для обмена сообщениями из-за базы данных в реальном времени.Когда я хочу получить сообщения от Firebase, я получаю Не найден, но в console.log() он показывает меня.

Это моя функция для getConversation (Сообщения)

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)
    })
}

Тогда явызовите его в другом контроллере, как это

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
    })

}

Наконец, я вызываю его в маршрутах.

router.get('/getConversation/:id', middlewares.isAuthenticate, controllers.userConversation.getMessages)

Я всегда получаю тело Не найдено.Кто-нибудь знает, как я могу это решить?

1 Ответ

0 голосов
/ 28 сентября 2018

Я решил это.

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 должен иметь Обещание.

...