我正在学习 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/