Javascript Firebase函数。onWrite不工作?

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

好的,我已经看过类似的问题,比如,并认为这是我的错误获得参考,但我不知道我的Firebase函数在这里发生了什么

我只是想在对数据库进行写入操作时,获取一个写入数据库的函数。我严格遵循firebase教程:

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()
替换某个位置的所有内容<代码>更新()将给定值添加到现有数据中。