如何使用 Cloud Functions for Firebase 更新 firebase 实时数据库中的值
how to update a value in firebase realtime database using Cloud Functions for Firebase
我查看了使用 Cloud Functions for Firebase 更新实时数据库中的值的 firebase 文档,但我无法理解。
我的数据库结构是
{
"user" : {
"-KdD1f0ecmVXHZ3H3abZ" : {
"email" : "ksdsd@sdsd.com",
"first_name" : "John",
"last_name" : "Smith",
"isVerified" : false
},
"-KdG4iHEYjInv7ljBhgG" : {
"email" : "superttest@sds213123d.com",
"first_name" : "Max1",
"last_name" : "Rosse13131313l",
"isVerified" : false
},
"-KdGAZ8Ws6weXWo0essF" : {
"email" : "superttest@sds213123d.com",
"first_name" : "Max1",
"last_name" : "Rosse13131313l",
"isVerified" : false
}
}
我想使用数据库触发器云函数更新 isVerified。我不知道如何使用云函数更新数据库值(语言:Node.JS)
我编写了一段代码,当使用数据库触发器 onWrite 创建用户时,自动更新用户键 'isVerified' 的值。我的代码是
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.userVerification = functions.database.ref('/users/{pushId}')
.onWrite(event => {
// Grab the current value of what was written to the Realtime Database.
var eventSnapshot = event.data;
if (event.data.previous.exists()) {
return;
}
eventSnapshot.update({
"isVerified": true
});
});
但是当我部署代码并将用户添加到数据库时,云函数日志显示以下错误
TypeError: eventSnapshot.child(...).update is not a function
at exports.userVerification.functions.database.ref.onWrite.event (/user_code/index.js:10:36)
at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:35:20
at process._tickDomainCallback (internal/process/next_tick.js:129:7)
您正在尝试对 DeltaSnapshot 对象调用 update()。那种类型的对象没有这样的方法。
var eventSnapshot = event.data;
eventSnapshot.update({
"isVerified": true
});
event.data
是一个 DeltaSnapshot。如果要更改此对象所代表的更改位置处的数据。使用其 ref
属性 获取引用对象:
var ref = event.data.ref;
ref.update({
"isVerified": true
});
此外,如果您正在函数中读取或写入数据库,您应该always return a Promise指示更改何时完成:
return ref.update({
"isVerified": true
});
我建议从评论中采纳 Frank 的建议并研究现有的 sample code and documentation 以更好地理解 Cloud Functions 的工作原理。
我查看了使用 Cloud Functions for Firebase 更新实时数据库中的值的 firebase 文档,但我无法理解。
我的数据库结构是
{
"user" : {
"-KdD1f0ecmVXHZ3H3abZ" : {
"email" : "ksdsd@sdsd.com",
"first_name" : "John",
"last_name" : "Smith",
"isVerified" : false
},
"-KdG4iHEYjInv7ljBhgG" : {
"email" : "superttest@sds213123d.com",
"first_name" : "Max1",
"last_name" : "Rosse13131313l",
"isVerified" : false
},
"-KdGAZ8Ws6weXWo0essF" : {
"email" : "superttest@sds213123d.com",
"first_name" : "Max1",
"last_name" : "Rosse13131313l",
"isVerified" : false
}
}
我想使用数据库触发器云函数更新 isVerified。我不知道如何使用云函数更新数据库值(语言:Node.JS)
我编写了一段代码,当使用数据库触发器 onWrite 创建用户时,自动更新用户键 'isVerified' 的值。我的代码是
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.userVerification = functions.database.ref('/users/{pushId}')
.onWrite(event => {
// Grab the current value of what was written to the Realtime Database.
var eventSnapshot = event.data;
if (event.data.previous.exists()) {
return;
}
eventSnapshot.update({
"isVerified": true
});
});
但是当我部署代码并将用户添加到数据库时,云函数日志显示以下错误
TypeError: eventSnapshot.child(...).update is not a function
at exports.userVerification.functions.database.ref.onWrite.event (/user_code/index.js:10:36)
at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:35:20
at process._tickDomainCallback (internal/process/next_tick.js:129:7)
您正在尝试对 DeltaSnapshot 对象调用 update()。那种类型的对象没有这样的方法。
var eventSnapshot = event.data;
eventSnapshot.update({
"isVerified": true
});
event.data
是一个 DeltaSnapshot。如果要更改此对象所代表的更改位置处的数据。使用其 ref
属性 获取引用对象:
var ref = event.data.ref;
ref.update({
"isVerified": true
});
此外,如果您正在函数中读取或写入数据库,您应该always return a Promise指示更改何时完成:
return ref.update({
"isVerified": true
});
我建议从评论中采纳 Frank 的建议并研究现有的 sample code and documentation 以更好地理解 Cloud Functions 的工作原理。