exports.editData = functions.database.ref('/AllData/hello/A').onWrite((change, context) => {
const after = change.after;
if (after.exists()) {
const data = after.val();
var value = data;
// set of data to multiply by turns ratio
var actualEIn = (value.ein)*200;
console.log('Data Edited');
}
return admin.database().ref('/editedData/hello/A').push({
ein: actualEIn,
});
});
答案 0 :(得分:2)
更改此:
exports.editValues = functions.database.ref('/AllData/hello/A').onWrite((snapshot) => {
const data = snapshot.val();
if (data.exists()) {
对此:
exports.editValues = functions.database.ref('/AllData/hello/A').onWrite((change,context) => {
const data = change.after.val();
if (data.exists()) {
更多信息在这里:
https://firebase.google.com/docs/functions/beta-v1-diff#realtime-database
答案 1 :(得分:1)
exports.editData = functions.database.ref('/AllData/hello/A/{id}').onWrite((change, context) => {
const afterData = change.after;
if (afterData.exists()) {
console.log('hey');
const data = afterData.val();
// set of data to multiply by turns ratio
var actualEIn = (data.ein)*200;
}
return admin.database().ref('/editedData/hello/A').push({
ein: actualEIn,
});
});
大家好,感谢您的帮助! :)我设法通过在后面添加一个/ {id}来解决这个问题!
答案 2 :(得分:0)
您在这里有两件事错了。
首先,从1.0版开始,较新版本的firebase-functions SDK将Change
对象传递给onWrite处理程序,而不是您期望的快照。 Change对象具有before
和after
的属性,其中DataSnapshot
对象具有触发该函数的更改前后的数据库内容。 Please read the documentation for database triggers获取所有信息。
第二,exists()
是DataSnapshot
上的一种方法,但是您正在使用它对数据库内容的原始JavaScript对象值的位置进行更改。来自val()
的JavaScript对象将没有任何调用方法。
您可能应该将代码更新为:
入门代码:
exports.editValues = functions.database.ref('/AllData/hello/A').onWrite((change) => {
const after = change.after; // the DataSnapshot of the data after it was changed
if (after.exists()) {
const data = after.val() // the raw JavaScript value of the location
// use data here
}
})