【问题标题】:Firebase onWrite other instance event.params is undefinedFirebase onWrite 其他实例 event.params 未定义
【发布时间】:2018-02-15 10:29:11
【问题描述】:

exports.cloneUsers = functions.database.instance('ams4-contract').ref('/users/{user_id}').onWrite(event => {
//exports.cloneUsers = functions.database.ref('/users/{user_id}').onWrite(event => {
    let user_data = event.data.val();
    let user_id = event.params.user_id;

    console.log('event usr ' + event.timestamp);
    console.log('Indexing usr ' + user_id + ' ' + user_data);

    let elasticSearchFields = ['name', 'nick', 'martial art'];
    let elasticSearchConfig = functions.config().elasticsearch;
    let elasticSearchUrl = elasticSearchConfig.url + 'users/user/' + user_id;
    let elasticSearchMethod = user_data ? 'POST' : 'DELETE';

    let elasticSearchRequest = {
        method: elasticSearchMethod,
        uri: elasticSearchUrl,
        auth: {
            username: elasticSearchConfig.username,
            password: elasticSearchConfig.password
        },
        body: _.pick(user_data, elasticSearchFields),
        json: true
    };

    return request(elasticSearchRequest).then(response => {
        console.log('Elasticsearch response', response);
    })

});

当我使用functions.database.ref时, 可以得到event.params.user_id 并且可以完成elasticsearch的更新。

但是使用functions.database.instance('ams4-contract') event.params.user_id 未定义!

此日志 登录 ID 36608977830579 为functions.database.ref functions.database.instance('ams4-contract') 的日志 ID 36604231411908 谢谢。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    这似乎是一个错误。您现在可以通过在使用 instance() 时从 ref 字符串中删除前导斜杠来解决它:

    exports.cloneUsers = functions.database.instance('ams4-contract')
        .ref('users/{user_id}')
    

    我在 Firebase 内部提交了一个错误。随意file a bug report你自己。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-13
      • 2018-03-28
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      相关资源
      最近更新 更多