我新的React本土和消防仓库与我如此裸露。
我试图在一个名为groups的集合中创建一个文档(这很有效),一旦创建完成,我将获取所创建文档的文档ID,然后尝试在其中创建一个名为admins的子集合,然后创建一个带有当前用户ID的文档,然后将isAdmin字段设置为true。
我不知道我是否犯了一个错误或逻辑甚至不正确。
我得到了一个未处理的承诺拒绝错误和如下所示的console. logs输出
检索到的文档ID:SNPXEsZ8Bp7xQkJJtlj0
当前用户ID:vhzfudjwejxjcqhcvzve3y9meu33
[未处理的承诺拒绝:类型错误:_firebase. db.集合("组"). doc(docId).集合("管理员"). doc(用户Id). add不是函数。(在"_firebase. db.集合("组"). doc(docId).集合("管理员"). doc(用户Id). add({]
const submitGroup = async () => {
await db
.collection('groups')
.add({
userId: user.uid,
groupName: groupName,
groupImage: null,
postTime: firebase.firestore.Timestamp.fromDate(new Date()),
groupPrivacy: selectedItem,
})
.then((docRef) => {
// get & pass the doc id created above to var
const docId = docRef.id;
//pass the current user id to var
const userId = user.uid;
const addAddmins = async (docId, userId) => {
console.log('Document retreived with ID: ', docId);
console.log('Current User ID: ', userId);
await db.collection('groups')
.doc(docId)
.collection('admins')
.doc(userId)
.add({
isAdmin: true,
})
.then(() => {
//Alert success
}).catch((error) => {
console.log('Something went wrong', error)
})
}
//Call add sub collection and pass parent doc ID and current userID
addAddmins(docId, userId)
})
.catch((error) => {
console.log('Something went wrong', error)
})
}
3条答案
按热度按时间p4tfgftt1#
我还没有测试这段代码,只是检查一下
groupId
中是否有id
键。kb5ga3dv2#
好的,我设法解决了我的问题,我不得不将.add({})更改为.set({})。我猜是因为第一个查询已经创建了父集合。
vql8enpb3#
我在firestore版本9上试过这个,它创建了一个名为collection的消息,ID为messageID,它还有一个名为messages的子集合,ID为subcollectionID。