Javascript 从Firebase函数数据库触发器获取未知的密钥名

Javascript 从Firebase函数数据库触发器获取未知的密钥名,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我是Firebase函数的新手,试图了解如何从数据库中获取某个密钥。onCreate触发器。以下是一个例子: exports.createUserRoundData = functions.database.ref('/data/players/{user_key}/').onCreate(event => { var eventData = event.data.val(); var userKey = event.params.user_key; var

我是Firebase函数的新手,试图了解如何从数据库中获取某个密钥。onCreate触发器。以下是一个例子:

exports.createUserRoundData = 
functions.database.ref('/data/players/{user_key}/').onCreate(event => {

    var eventData = event.data.val();

    var userKey = event.params.user_key;

    var itemKey = eventData.items; // This returns an object

});
结构如下:

players > user_key > items > item_key > data
在上面的场景中,我如何检索item_键

是的,你可以

你需要这样的东西:

exports.createUserRoundData = functions.database.ref('/data/players/{user_key}/').onCreate(event => {
    var userKey = event.params.user_key; // Get user key parameter
    var eventSnapshot = event.data; // Get player data
    var itemsSnapshot = eventSnapshot.child('items'); // Get items data

    itemsSnapshot.forEach(function(itemSnapshot) { // For each item
        var itemKey = itemSnapshot.key; // Get item key
        var itemData = itemSnapshot.val(); // Get item data
    });
});

谢谢,这让我发疯了。后续问题-如果items节点中只有一个子项,这仍然是检索它的最佳方式吗?是的,我认为,在这个函数中,我们只使用可用数据,而不使用任何其他数据库请求。即使只有一个子循环,forEach循环仍然是最好的方法。