所以我有一个从Firebase返回的对象,如下所示:
{key: {name: "test", email: "test", id: "test"}}
如何从这个对象中获取id?
如果我returnItem
我得到了那个对象,所以我尝试returnItem[0]
但它不是一个数组,我已经尝试了(Object.keys(tempSnap)
但这只是给了我关键里面的对象。
这是我目前的代码:
export function sendInvitation(email) {
firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
let tempSnap = snapshot.val();
if(tempSnap != null) {
console.log(tempSnap);
}
});
return dispatch => firebaseRef.database().ref(`${userID}/invites`).push("This is a test Message!");
}
这是它输出的内容:
帮助很棒:D
答案 0 :(得分:1)
如果您已经知道id
并且它是一个文字,那么它就是returnItem.id
的问题。
如果您已经知道id
并且它是变量,那么它是returnItem[id]
。
如果您不知道密钥并想要打印所有密钥及其值,那就是:
Object.keys(returnItem).forEach(function(key) {
console.log(key, returnItem[key]);
});
<强>更新强>
您的新代码显示了问题。对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。您的回调需要通过使用snapshot.forEach()
循环结果来处理它获取列表的事实:
firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
snapshot.forEach(function(child) {
let tempSnap = child.val();
console.log(tempSnap);
});
});
答案 1 :(得分:1)
试试这个:
firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
snapshot.forEach(function(child) {
let keys=child.key;
let ids=child.val().id;
)};
)};
你有:
users
keyid
email:email
name:yourname
id: test