Comment puis-je effectuer des transactions d'écriture/exécution par lots avec firestore dans une application angular2?
https://firebase.google.com/docs/firestore/manage-data/transactions
Si c'est possible, comment puis-je convertir le code JS en code TS dans une application angular2.
Si vous utilisez AngularFirestore, vous devez d’abord vous assurer que votre constructeur est configuré comme suit:
constructor(private db: AngularFirestore)
Vous pouvez maintenant utiliser db.firestore pour obtenir une instance firebase.firestore.
Vous pouvez simplement copier le code du lien et remplacer db par db.firestore . Ou vous pouvez le rendre plus chic en utilisant les fonctions de flèche:
Mise à jour des données avec des transactions:
// Create a reference to the SF doc.
const sfDocRef = db.firestore.collection("cities").doc("SF");
// Uncomment to initialize the doc.
// sfDocRef.set({ population: 0 });
db.firestore.runTransaction(transaction =>
// This code may get re-run multiple times if there are conflicts.
transaction.get(sfDocRef)
.then(sfDoc => {
const newPopulation = sfDoc.data().population + 1;
transaction.update(sfDocRef, { population: sfDoc.data().population + 1 });
})).then(() => console.log("Transaction successfully committed!"))
.catch(error => console.log("Transaction failed: ", error));
Transmission d'informations en dehors des transactions:
// Create a reference to the SF doc.
const sfDocRef = db.firestore.collection("cities").doc("SF");
db.firestore.runTransaction(transaction =>
transaction.get(sfDocRef).then(sfDoc => {
const newPopulation = sfDoc.data().population + 1;
if (newPopulation <= 1000000) {
transaction.update(sfDocRef, { population: newPopulation });
return newPopulation;
} else {
return Promise.reject("Sorry! Population is too big.");
}
}))
.then(newPop => console.log("Population increased to ", newPop)
).catch(err => console.error(err)); // This will be an "population is too big" error.
Lot écrit:
// Get a new write batch
var batch = db.firestore.batch();
// Set the value of 'NYC'
var nycRef = db.firestore.collection("cities").doc("NYC");
batch.set(nycRef, {name: "New York City"});
// Update the population of 'SF'
var sfRef = db.firestore.collection("cities").doc("SF");
batch.update(sfRef, {"population": 1000000});
// Delete the city 'LA'
var laRef = db.firestore.collection("cities").doc("LA");
batch.delete(laRef);
// Commit the batch
batch.commit().then(() => {
// ...
});
C'est simple:
constructor(private db: AngularFirestore){}
inserting(){
//--create batch--
var batch = this.db.firestore.batch();
//--create a reference--
const userRef = this.db.collection('users').doc('women').ref;
batch.set(userRef , {
name: "Maria"
});
//--create a reference--
const userRef = this.db.collection('users').doc('men').ref;
batch.set(userRef , {
name: "Diego"
});
//--Others more 54 batch's--
//--finally--
return batch.commit();
}