当我从前端(Angular 4)和后端(firebase函数)向firebase数据库写入数据时,firebase会生成一个推送密钥。使用此密钥,我将来无法访问数据,因为密钥是唯一的。我想知道我可以自己设置密钥的任何方式,或者我可以在不知道密钥的情况下访问数据?
这是我的前端代码:
this.db.list(`${this.basePath}/`).push(upload);
这是我后端的代码:
admin.database().ref('/messages').push({original: original}).then(function (snapshot) {
res.redirect(303, snapshot.ref);});
我推送的所有数据都将在path / pushID / data
我不知道pushID就无法访问数据。
我想要的最好的情况是路径/我自己的pushID / data
非常感谢你的帮助!!
答案 0 :(得分:1)
键应该是唯一的。您可以set
使用自己的密钥而不是push
admin.database().ref('/messages/'+ yourUniqueId).set({original: original}).then(function (snapshot) {
res.redirect(303, snapshot.ref);});
yourUniqueId
可以是auth uid
或email
用户,也可以是唯一的。
答案 1 :(得分:1)
如果您想循环浏览所有消息:
var ref = firebase.database().ref("messages");
ref.once("value", function(snapshot) {
snapshot.forEach(function(message) {
console.log(message.key+": "+message.val().original);
});
});
如果要查找特定消息,请使用查询:
var ref = firebase.database().ref("messages");
var query = ref.orderByChild("original").equalTo("aaaa");
query.once("value", function(snapshot) {
snapshot.forEach(function(message) {
console.log(message.key+": "+message.val().original);
});
});
有关详情,请阅读reading lists of data,sorting and filtering data上的Firebase文档,然后选择Firebase codelab。