一次推送多个对象

Posted

技术标签:

【中文标题】一次推送多个对象【英文标题】:Push multiple objects at once 【发布时间】:2017-08-24 11:00:50 【问题描述】:

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

仅仅推送一个对象数组并不会为每个对象设置键。

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

【问题讨论】:

【参考方案1】:

使用常规 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 进行此操作。

【讨论】:

这对每个ref.push().key 进行服务器请求? 不。 push 是一个客户端操作,它生成一个在统计上保证唯一的密钥。 “统计保证”?【参考方案2】:

根据@Frank 的回答,即兴创作了一个reducer 和一个promise resolver> 这是最终版本:

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

【讨论】:

以上是关于一次推送多个对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 c2dm 一次发送多个推送

如何使用适用于 Android 的 Push sharp 库一次发送多个推送通知?

使用 QUndoCommand 的子级/父级推送多个命令以一次撤消堆栈

一次向多个(超过 3 个)主题发送 Firebase 云消息(又名推送通知)

如何使用 $push (Mongoose) 在数组中推送多个对象

显示多个推送通知