当我在Flutter应用程序中使用Firebase Cloud Functions在集合内创建文档时,它将起作用:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.onCreatePost = functions.firestore
.document("/posts/{postId}")
.onCreate(async (snap, context) => {
const doc = snap.data()
const creatorId = doc.creatorId
admin.firestore().collection('feeds').doc(creatorId).set({
Id: creatorId,
isRead: false,
timestamp: admin.firestore.FieldValue.serverTimestamp(),
})
});
但是当我尝试将同一文档添加到该文档的子集合中时,它不起作用:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.onCreatePost = functions.firestore
.document("/posts/{postId}")
.onCreate(async (snap, context) => {
const doc = snap.data()
const creatorId = doc.creatorId
admin.firestore().collection('feeds').doc(creatorId).collection('feedItems').doc(context.params.postId).set({
Id: creatorId,
isRead: false,
timestamp: admin.firestore.FieldValue.serverTimestamp(),
})
});
答案 0 :(得分:1)
我不希望这两个函数都能可靠地工作,因为您不会返回异步工作完成后可以解决的承诺。如果您不返回承诺,则Cloud Functions可能会在完成之前终止您的功能。
至少,您应该返回set()
返回的承诺。
return admin.firestore()
.collection('feeds')
.doc(creatorId)
.collection('feedItems')
.doc(context.params.postId)
.set(...)
您还应该检查Cloud Functions日志中是否有错误。由于代码完全在应用程序外部运行,因此错误不会显示在您的应用程序中。