Javascript 当用户在react native中注册应用程序时,是否希望在firebase的文档中创建子集合?其子集合已创建
要在用户注册应用程序时添加子集合将子集合创建到包含其子项的文档中。 这是我的密码:Javascript 当用户在react native中注册应用程序时,是否希望在firebase的文档中创建子集合?其子集合已创建,javascript,firebase,react-native,google-cloud-firestore,Javascript,Firebase,React Native,Google Cloud Firestore,要在用户注册应用程序时添加子集合将子集合创建到包含其子项的文档中。 这是我的密码: try { await firebase.auth().createUserWithEmailAndPassword(email, password); const currentUser = firebase.auth().currentUser; const db = firebase.firestore(); db.collection("users&qu
try {
await firebase.auth().createUserWithEmailAndPassword(email, password);
const currentUser = firebase.auth().currentUser;
const db = firebase.firestore();
db.collection("users")
.doc(currentUser.uid)
.set({
email: currentUser.email,
lastName: lastName,
firstName: firstName,
}).collection('users').doc(currentUser.uid).collection("recipient").add({name:"test", age:"25" }).then((data) => {
console.log(data.id);
console.log("Document has added")
}).catch((err) => {
console.log(err)
})
} catch (err) {
alert("There is something wrong!!!!" + err.message.toString());
}
}
代码中的问题是将第二个add document链接到子集合,因为第一个承诺不返回文档引用,而是返回一种有关操作耗时的信息。正确的方法如下:
async function addUser(id, user) {
const db = firebase.firestore();
const users = db.collection('users')
try {
const result = await users.doc(id).set(user)
return result
} catch (e) {
console.log("addUser: ", e)
return null
}
}
async function getUserRef(id) {
const db = firebase.firestore();
const users = db.collection('users')
try {
const docSnapshot = await users.doc(id).get()
return docSnapshot.ref
} catch (e) {
console.log("getUserRef: ", e)
return null
}
}
try {
const user = {
email: currentUser.email,
lastName: lastName,
firstName: firstName,
}
const result = await addUser(id, user);
const ref = await getUserRef(id)
await ref.collection("recipient").add({name:"test", age:"25" })
} catch (e) {
console.log(e)
}