【发布时间】: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