javascript - firebase云使用 "key"参数写入数据

标签 javascript firebase firebase-realtime-database google-cloud-functions

我正在学习 Firebase 的 Cloud Functions。我想要的是在 URL 参数中传递键和值,例如:

https://xxx.cloudfunctions.net/addMessageSet?text=goodboy&key=testKey

然后在实时数据库中设置一个testKey:goodboy

我知道使用 push() 将生成一个唯一的 key (如果我理解正确的话),但我想每次都使用自己的 key 。我不确定 set() 是否有效。

我的问题是 push({originalKey:original}) 无法按预期工作。文中写道:

originalKey: goodboy

其中 originalKey 只是键,而不是 URL 中的参数。这是可能的还是有其他解决方案?

代码如下:

exports.addMessageSet = functions.https.onRequest((req, res) => {
    // Grab the text parameter.
    const original = req.query.text;
    const originalKey = req.query.key;
    admin.database().ref('/messages/').push({originalKey:original}).then(snapshot => {
        console.log('goodboy', original, originalKey);
        res.redirect(303, snapshot.ref);
    });
});

最佳答案

如果您想使用正在生成的 key 而不需要 Firebase 生成另一个 key ,则需要在路径中使用带有 key 的 set

admin.database().ref('/messages/' + originalKey).set(original).then(snapshot => { });
// if originalKey is not a string use String(originalKey)

你说 originalKey 不是一个 url,而是 firebase 中的所有内容(如果基于 url),就像你正在做的那样

myDB
|_ messages
   |_ originalKey: original

而不是

myDB > messages > originalKey > original

如果您在 messages 节点之后需要另一个键,我建议使用日期 UNIX 数字,momentJS 可以很好地处理这个问题。

希望对你有帮助

关于javascript - firebase云使用 "key"参数写入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783138/

相关文章:

javascript - 字符串操作,删除标签

javascript - AngularJS/Javascript 将键分配给变量语法

javascript - 用三个时间值计算时间差

java - Firebase 从 DataSnapShot 检索存储的 ArrayList 给出 NullPointerException

firebase - HMS华为管理服务

android - 如何在 firebase 中获取与当前用户关联的帐户

java - 如何在登录后重定向处于不同 Activity 的 2 个不同用户?

javascript - HTML 和 CSS ..并排添加 div n 次

javascript - 如何从 firebase 检索特定数据

ios - 查询为空时的 Firebase