一次推送多个对象
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);
)
【讨论】:
以上是关于一次推送多个对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用适用于 Android 的 Push sharp 库一次发送多个推送通知?
使用 QUndoCommand 的子级/父级推送多个命令以一次撤消堆栈
一次向多个(超过 3 个)主题发送 Firebase 云消息(又名推送通知)