如何将从Firebase服务器返回的文档返回并解析到客户端



前言:我是一名iOS程序员,正在深入Node/JS。我创建了一个https.onCall函数,因为我需要执行多次读取+写入。在最后的更新承诺中,理想情况下,我希望以可以解码为DocumentSnapshot的形式返回数据(因为这很容易转换为模型(,但我也很乐意做最佳实践。

这就是相关代码的样子:

return group.ref.set({
members: admin.firestore.FieldValue.arrayUnion(user)
}, { merge: true }).then(result => {
// The additional `get` seems necessary because the completion block doesn't contain the updated document's data
return group.ref.get().then(doc => {
return doc
})
})

我也尝试返回return group.ref.get(),但都未能在iOS端解析:

// This fails to cast
guard let document = result?.data as? DocumentSnapshot else { return }

我想这将是一个我可以工作的替代方案:

...
return {
id: doc.id,
data: doc.data()
}

然后在iOS端手动解码JSON。但这感觉很严厉,所以我希望有人能用一个更直接的解决方案来启发我。

可调用函数不接收或传递强类型数据。所有内容都归结为JSON,JSON被转换为两端的相关低级类型。

如果你想从一个可调用的函数中传递DocumentSnapshot,你应该至少调用它的data()方法,以获得一个易于序列化的普通JavaScript对象,这就是你的替代方法。就我个人而言,我并不认为这是"高压手段"。这是不共享复杂类型序列化系统的系统之间非常典型的数据交换。

相关内容

  • 没有找到相关文章

最新更新