Comment puis-je mettre à jour plusieurs documents dans Firestore en utilisant une seule transaction que j'ai recherchée mais je n'ai pas eu de réponses Est-il possible de mettre à jour plusieurs documents en une seule transaction? Je sais que cela peut être fait par lot écrit.
Je l'ai compris
nous pouvons utiliser plusieurs références dans une transaction
var me = db.collection("users").doc("suhail");
var v = db.collection("users").doc("sam");
var s = db.collection("users").doc("john");
var t = db.collection("users").doc("Alfred");
var tadd = db.collection('userdetails').doc('Alfred');
db.runTransaction(function(transaction) {
return transaction.get(s).then(function(sDoc) {
var age = sDoc.data().age + 1;
transaction.set(t,{name:'Alfred',age:age,details:tadd});
transaction.set(tadd,{address:'Alfred Villa'});
transaction.update(s, {
age: age
});
transaction.update(me, {
age: age
});
transaction.update(v, {
age: age
});
return age;
});
}).then(function(age) {
console.log("Age changed to ", age);
}).catch(function(err) {
console.error(err);
});
par le code ci-dessus, la transaction met à jour l'âge de tous les utilisateurs
Preuve de concept:
var transaction = firestore.runTransaction( t => {
return t.get(eRef)
.then(snapshot => {
snapshot.forEach(doc => {
var employee = doc.data();
if(employee.status !== 'Off work') {
t.update(doc.ref, {
status: 'Off work',
returnTime: '8 am'
})
}
})
})
}).then(result => {
console.log('Transaction success!')
}).catch(err => {
console.log('Transaction failure: ', err)
});