1

我想从选择器部分随机获取一个子键,然后从另一个节点向它添加数据。我想用一个 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);

});

图片

我怎样才能做到这一点?

4

1 回答 1

3

以下应该可以解决问题:

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/

于 2020-05-19T11:05:53.943 回答