javascript - 如何使用 Javascript 云功能从 Firebase 实时数据库中随机获取子键名称
问题描述
我想从选择器部分随机获取一个子键,然后从另一个节点向它添加数据。我想用一个 JavaScript 云函数来完成这一切。这是我的代码。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.onDataAdded = functions.database.ref('/Pickup-Requests/{uid}').onCreate((snapshot, context) => {
const getRandomPickerid =
database.ref('/Pickers').once('value').then(event => {
const pickerUid = Object.keys()[random];
return pickerUid;
})
.catch(error => {
console.error("Error", error);
});
const pickerUid = getRandomPickerid;
const data = snapshot.val();
const newData = data;
return snapshot.ref.parent.child(pickerUid).set(newData);
});
我怎样才能做到这一点?
解决方案
以下应该可以解决问题:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
function randomKey(obj) {
var keys = Object.keys(obj);
return keys[(keys.length * Math.random()) << 0];
}
exports.onDataAdded = functions.database.ref('/Pickup-Requests/{uid}').onCreate((snapshot, context) => {
const db = admin.database();
const data = snapshot.val();
return db.ref('/Pickers').once('value')
.then(snapshot => {
const pickerUid = randomKey(snapshot.val());
return snapshot.ref.parent.child(pickerUid).set(data);
})
});
我建议您观看 Firebase 视频系列中有关“JavaScript Promises”的 3 个视频:https ://firebase.google.com/docs/functions/video-series/
推荐阅读
- reactjs - 组件 div 背景和实际背景颜色之间的冲突
- c++ - 如何访问 std::variant 中的类型?
- c++ - C++ 错误“_main”,引用自:“Xcode
- php - sql查询未执行
- angular - 在 Angular 中渲染一个子组件 afterViewInit
- python - Tkinter 的超类
- python - Python 从字面上隐藏一行并跳过调用函数
- python - 最后一位以 5 舍入小数点
- dns - 将 example.com 重定向到 www.example.com
- apache - 强制将 HTTPS 与 .COM 域和 .htaccess 中的 WWW 一起使用