由于使用实时数据库,因此我在Koa中进行开发,并且使用Firebase进行消息传递。当我想从firebase接收消息时,我得到Not found,但是在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)
我总是身体不被发现。 有人知道我该怎么解决吗?
答案 0 :(得分:0)
我解决了。
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
必须有一个承诺。