¿Cómo puedo empujar varios objetos a la vez con angularfire2?
Simplemente empujar una matriz de objetos no establece claves para cada objeto.
this.af.database.list('/symbols/').push({ typ: "symbol1", // .... }); this.af.database.list('/symbols/').push({ typ: "symbol2", // .... });
Con el SDK de JavaScript de Firebase normal, puede lograr esto con:
var updates = {}; updates['/symbols/'+ref.push().key] = { typ :"symbol1", .... }; updates['/symbols/'+ref.push().key] = { typ :"symbol2", .... }; ref.update(updates);
Dado que AngularFire2 se basa en el SDK de JavaScript de Firebase normal, interactúan perfectamente. Entonces, solo puede usar el SDK de JavaScript de Firebase para esta operación.
Basado en la respuesta de @Frank, lo improvisé para tener un reductor y un resolvedor de promesas> Aquí está la versión final:
const admin = require('firebase-admin'); const types = [ { type: "symbol1" }, { type: "symbol2" } ]; const rootRef = admin.database().ref(); const ref = rootRef.child(`/symbols`); // prepare updates object based on types array. let updates = types.reduce((update, type) => { let id = ref.push().key; update[`/symbols/${id}`] = type; return update; }, {}); await rootRef.update(updates) .then((response) => { return res.status(201).json({message: "Records added successfully"}); }) .catch((error)=>{ res.sendStatus(500); })