newBaseRef.set()
return Promise
.
Поэтому, когда вызывается newBaseRef.onSnapshot()
, newBaseRef.data().uid
еще не установлено.
См .:
Вы должны позвонить newBaseRef.onSnapshot()
после Promise.resolve()
.
const db = window.firebase.firestore()
const newBaseRef = db.collection('base').doc()
newBaseRef.set({
uid: window.firebase.auth().currentUser.uid,
createdAt: window.firebase.firestore.FieldValue.serverTimestamp()
}).then(() => {
newBaseRef.onSnapshot(doc => {
console.log('Current data: ', doc.data())
}, function (error) {
throw error // THIS ALWAYS GETS HIT
})
})
и более.
Если вы хотите только вставить, то выследует использовать newBaseRef.add({})
.
Если вы хотите вставить или удалить или вставить (заменить все данные), вам следует использовать newBaseRef.set({})
.
Если вы хотите вставить обновление или обновить, то вам следует использовать newBaseRef.set({}, {merge, true})
.
Если вы хотите только обновить, вам следует использовать newBaseRef.update({})
.
Если вы хотите вставить обновление или обновить, измените правила безопасности на следующий параметр.
service cloud.firestore {
match /databases/{database}/documents {
match /printset/{document=**} {
allow read, update, delete: if request.auth.uid == resource.data.uid
allow create: if request.auth.uid != null;
}
match /file/{document=**} {
allow read, update, delete: if request.auth.uid == resource.data.uid
allow create: if request.auth.uid != null;
}
match /base/{document=**} {
allow read, delete: if request.auth.uid == resource.data.uid
allow update: if resource == null || request.auth.uid == resource.data.uid
allow create: if request.auth.uid != null;
}
}
}