gpt4 book ai didi

javascript - Firebase 函数 .onWrite 不起作用?

转载 作者:行者123 更新时间:2023-12-01 02:43:35 25 4
gpt4 key购买 nike

好的,我看过类似的问题,例如 Firebase function onWrite not being called并认为获取引用是我的错,但我不知道我的 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} 参数,并且数据肯定已写入我的数据库,但我的服务器代码没有写入:

enter image description here

我明白了 -

ReferenceError: firebase is not defined at exports.enterLocation.functions.database.ref

这没有任何意义,因为它的定义。我只想在我创建的用户下添加一个额外的子级,就像我已经使用“密码”所做的那样

enter image description here

我做错了什么?

最佳答案

这里有两个问题。首先,您还没有在代码中的任何地方定义 firebase 。我认为您打算使用 admin 而不是使用 Admin SDK。

其次,看起来您正在尝试将变量插值到字符串中以构建引用的名称。你的语法在这里是错误的。

我想你是想在最后一行代码中这样说:

return admin.database().ref(`/Users/${name}`).set({ location: 'test loc' });

注意字符串引号上的反引号。该 JavaScript 语法允许您使用 ${exp} 在字符串中插入某些表达式的内容。

事实证明,您甚至不需要在这里使用管理 SDK。由于您尝试写回到触发该函数的同一位置,因此您可以仅使用来自事件对象的引用:

return event.data.adminRef.set({ location: 'test loc' });

关于javascript - Firebase 函数 .onWrite 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47402678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com