Javascript firebase云使用“键”参数写入数据
我正在学习Firebase的云功能。我想要的是在URL参数中传递键和值,如:Javascript firebase云使用“键”参数写入数据,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在学习Firebase的云功能。我想要的是在URL参数中传递键和值,如: https://xxx.cloudfunctions.net/addMessageSet?text=goodboy&key=testKey 然后在实时数据库中设置一个testKey:goodboy 我知道如果我理解正确,use push将生成一个唯一的密钥,但我希望每次都使用我自己的密钥。我不确定这套装置是否有效 我的问题是push{originalKey:original}无法按预期工作。它写道: orig
https://xxx.cloudfunctions.net/addMessageSet?text=goodboy&key=testKey
然后在实时数据库中设置一个testKey:goodboy
我知道如果我理解正确,use push将生成一个唯一的密钥,但我希望每次都使用我自己的密钥。我不确定这套装置是否有效
我的问题是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);
});
});
使用push确实会生成一个唯一的密钥。您需要使用set或update
请注意,使用set将覆盖指定位置的数据,包括所有子节点。如果要使用正在生成的密钥而不使用firebase生成另一个密钥,则需要在路径中使用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节点之后需要另一个键,我建议使用dateunix编号,momentJS可以很好地处理这个问题
希望能有帮助