Javascript Firebase云函数不会在子集合中创建文档
当我在我的Flatter应用程序中使用Firebase Cloud函数在集合中创建文档时,它可以工作:Javascript Firebase云函数不会在子集合中创建文档,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,当我在我的Flatter应用程序中使用Firebase Cloud函数在集合中创建文档时,它可以工作: const functions = require('firebase-functions'); const admin = require('firebase-admin'); exports.onCreatePost = functions.firestore .document("/posts/{postId}") .onCreate(async (s
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(),
})
});
我做错了什么?我确实在日志中看到云函数已成功完成,但文档未在我的cloud Firestore中创建。我希望这两个函数都不会可靠工作,因为您不会返回在异步工作完成后解析的承诺。如果您不返回承诺,那么云函数可能会在完成之前终止您的函数 至少,您应该返回
set()
返回的承诺
您还应该检查云函数日志中的错误。错误不会显示在应用程序中,因为代码完全在应用程序之外运行
我也建议这样做。我也试过了。但也不起作用。我知道,如果不返回,它是不可靠的,但它只适用于将文档添加到集合中,而不适用于子集合。我还添加了一个.then(()=>{return console.log('Write successed!');});对于带有“return”的版本,云函数控制台显示消息“Write successed!”。。但我在CloudFireStore中没有看到该文档。我在云函数日志中没有看到任何错误。我知道发生了什么。。文档正在创建中,但由于mu flifter代码中的另一个逻辑,它在创建之后立即被删除。谢谢你的帮助!
return admin.firestore()
.collection('feeds')
.doc(creatorId)
.collection('feedItems')
.doc(context.params.postId)
.set(...)