Javascript Firebase函数。onWrite不工作?
好的,我已经看过类似的问题,比如,并认为这是我的错误获得参考,但我不知道我的Firebase函数在这里发生了什么 我只是想在对数据库进行写入操作时,获取一个写入数据库的函数。我严格遵循firebase教程:Javascript Firebase函数。onWrite不工作?,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,好的,我已经看过类似的问题,比如,并认为这是我的错误获得参考,但我不知道我的Firebase函数在这里发生了什么 我只是想在对数据库进行写入操作时,获取一个写入数据库的函数。我严格遵循firebase教程: const functions = require('firebase-functions'); // The Firebase Admin SDK to access the Firebase Realtime Database. //https://firebase.google.co
const functions = require('firebase-functions');
// The Firebase Admin SDK to access the Firebase Realtime Database.
//https://firebase.google.com/docs/functions/database-events
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
// const gl = require('getlocation');
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
exports.enterLocation = functions.database.ref('/Users/{name}') //brackets is client param
.onWrite(event => {
// Grab the current value of what was written to the Realtime Database.
// const original = event.data.val();
console.log('SKYLAR HERE:', event.params.name);
// You must return a Promise when performing asynchronous tasks inside a Functions such as
return firebase.database().ref('/Users/{name}').set({ location: 'test loc' });
});
函数正在运行,但在我的日志中,我得到了一个非常无用的错误,即它正在获取{name}参数,数据肯定会写入我的数据库,但是我的服务器代码没有写入:
我得到-
ReferenceError:未在上定义firebase
exports.enterLocation.functions.database.ref
按照定义,这毫无意义。我只想在我创建的用户下添加一个额外的子项,就像我已经使用“password”一样
我做错了什么?而不是这个:
return firebase.database().ref('/Users/{name}').set({ location: 'test loc' });
使用以下命令:
return admin.database().ref('/Users/{name}').set({ location: 'test loc' });
与此相反:
return firebase.database().ref('/Users/{name}').set({ location: 'test loc' });
使用以下命令:
return admin.database().ref('/Users/{name}').set({ location: 'test loc' });
这里有两个问题。首先,您没有在代码中的任何地方定义
firebase
。我想你是想用admin
来代替admin SDK
其次,看起来您正试图将变量插值到字符串中以构建引用的名称。您的语法在这里是错误的
我想你会在最后一行代码中这样说:
return admin.database().ref(`/Users/${name}`).set({ location: 'test loc' });
注意字符串引号上的反勾号。该JavaScript语法允许您使用${exp}
在字符串中插入某些表达式的内容
事实证明,您甚至不需要在这里使用AdminSDK。由于您试图写回触发该函数的同一位置,因此可以使用来自事件对象的ref:
return event.data.adminRef.set({ location: 'test loc' });
这里有两个问题。首先,您没有在代码中的任何地方定义
firebase
。我想你是想用admin
来代替admin SDK
其次,看起来您正试图将变量插值到字符串中以构建引用的名称。您的语法在这里是错误的
我想你会在最后一行代码中这样说:
return admin.database().ref(`/Users/${name}`).set({ location: 'test loc' });
注意字符串引号上的反勾号。该JavaScript语法允许您使用${exp}
在字符串中插入某些表达式的内容
事实证明,您甚至不需要在这里使用AdminSDK。由于您试图写回触发该函数的同一位置,因此可以使用来自事件对象的ref:
return event.data.adminRef.set({ location: 'test loc' });
您知道为什么要删除我创建的现有子项吗?密码?
set()
替换某个位置的所有内容<代码>更新()将给定值添加到现有数据中。您知道为什么要删除我创建的现有子项吗?密码?set()
替换某个位置的所有内容<代码>更新()将给定值添加到现有数据中。