Joi*_*ois 1 javascript firebase react-native firebase-realtime-database
我有一个用户列表,其中包含一个名为的节点scannedCards,其中包含一个数组cardIds.以下是一个用户的屏幕截图.
有多个像上面这样的用户,我想删除所有的卡ID,如果它们是equalTo(Some Card Id),我想同时与所有用户一起.
以下是我使用的查询:
const ref = database.ref('users');
const query = ref.orderByChild('cardId').equalTo(cardId);
Run Code Online (Sandbox Code Playgroud)
但结果总是空的,有人可以告诉我如何实现这一目标吗?
您上面列出的查询似乎没有返回任何内容,因为根据提供的屏幕截图,cardId它不是用户的直接子属性,而是scannedCards用户可能拥有的列表下每个对象的属性.
如果您只需要在一次性操作中执行此操作,则可以运行以下操作:
const ref = database.ref('users');
ref.once('value').then(snapshot => {
const users = snapshot.val();
for (var user_id in users) {
const scannedCards = users[user_id].scannedCards;
for (var card in scannedCards) {
if (scannedCards[card].card_id == "<some card id>") {
firebase.database().ref(`users/${user_id}/scannedCards/${card_id}`)
.set(null);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果您打算让登录用户删除他们扫描的卡片,那么它会有点复杂:
// user_id is for whoever is logged in
const ref = firebase.database().ref(`users/${user_id}/scannedCards`);
ref.once('value').then(snapshot => {
const scannedCards = snapshot.val();
for (var card in scannedCards) {
if (scannedCards[card].card_id == "<some card id>") {
firebase.database().ref(`users/${user_id}/scannedCards/${card_id}`)
.set(null)
}
}
});
Run Code Online (Sandbox Code Playgroud)
另外值得指出的是,scannedCards不是一个卡ID数组,因为键是对象ID,值是对象(包含cardId和userId属性).
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |