javascript - 使用本机反应将多个数据添加到firebase中特定ID的对象
问题描述
我有一个 firebase 实时数据库,这是它的结构:
您可以看到只有一个用户具有“hgjfj”用户名,我想使用 react native 在每个理发师的同一个队列对象中添加另一个用户
这是添加数据的功能:
NewBooking() {
var queue = { userName: 'gfdgdfg', userPhone: 54535 }
firebase.database().ref('Barbers/').push({
queue: queue
}).then((data) => {
//success callback
console.log('data ', data)
}).catch((error) => {
//error callback
console.log('error ', error)
})
}
有没有办法通过firebase获取生成的ID,例如获取LWC312750NY35f3YKEL并将新用户推送到该ID的队列中
解决方案
您的 currentqueue
根本不是队列,而是具有一对属性的单个对象。如果要存储每个理发师的对象列表,那么queue
应该是一个集合。
要将这样的对象添加到每个理发师的队列中,您首先需要读取所有理发师,然后遍历结果,最后将对象添加到每个队列中。
像这样的东西:
var newItem = { userName: 'gfdgdfg', userPhone: 54535 }
firebase.database().ref('Barbers').once('value').then(function(snapshot) {
snapshot.forEach(function(barberSnapshot) {
barberSnapshot.child('queue').ref.push(newItem);
});
});
如果您知道要将其添加到其队列的理发师的 ID,则代码可以简单得多:
var newItem = { userName: 'gfdgdfg', userPhone: 54535 }
firebase.database().ref('Barbers/UIDofBarber/queue').push(newItem);
如果您想清除每个理发师的队列,以摆脱您现在在那里拥有的有缺陷的对象:
firebase.database().ref('Barbers').once('value').then(function(snapshot) {
snapshot.forEach(function(barberSnapshot) {
barberSnapshot.child('queue').ref.remove();
});
});
顺便说一句,您违反了 Firebase 文档中的一项建议,即保持数据结构平坦。现在上面的代码需要读取关于每个理发师和队列的元数据,而实际上只需要访问队列。我建议创建顶级集合:一个用于每个理发师的元数据,一个用于他们的队列:
barbers
barberUID1: { ... }
barberUID2: { ... }
queues
barberUID1: {
queuePushID11: { ... }
queuePushID12: { ... }
}
barberUID2: {
queuePushID21: { ... }
queuePushID22: { ... }
}
推荐阅读
- goland - Goland 搜索功能未索引项目中的所有文件
- javascript - 如何使用javascript在刷新时保存切换按钮状态
- visual-studio-code - 在 VScode 选项卡中禁用问题徽章
- node.js - 指挥官的短帮助和长帮助
- html - 使用 DriveToWeb 托管在 G-Drive 上的站点在子文件夹中找不到索引文件
- python - 如何遍历压缩文件夹?
- npm - 如何阅读 npm“冲突对等依赖”错误消息?
- javascript - 从 LoopBack.io 中的模型字段中检索 ENUMS?
- android - 数据绑定恢复状态从其他视图重复值
- git - git子模块更新上游