一次推送多个对象

时间:2017-03-30 13:24:12

标签: javascript angular firebase firebase-realtime-database angularfire2

如何使用angularfire2一次执行多个对象推送?

只是按下一个对象数组不会为每个对象设置键。

this.af.database.list( '/symbols/').push(
             {
                 typ :"symbol1", ....
             }
         );
this.af.database.list( '/symbols/').push(
             {
                 typ :"symbol2", ....
             }
         );

2 个答案:

答案 0 :(得分:16)

使用常规Firebase JavaScript SDK,您可以通过以下方式完成此操作:

var updates = {};
updates['/symbols/'+ref.push().key] = {
  typ :"symbol1", ....
};
updates['/symbols/'+ref.push().key] = {
  typ :"symbol2", ....
};
ref.update(updates);

由于AngularFire2构建于普通的Firebase JavaScript SDK之上,因此它们完美互操作。因此,您只需使用Firebase JavaScript SDK即可完成此操作。

答案 1 :(得分:0)

根据@Frank的回答,即兴为其提供一个减速器和一个承诺解决器>这是最终版本:

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);
})