【发布时间】:2019-04-12 22:10:02
【问题描述】:
我需要您的帮助我正在为我的应用程序使用 firebase。我正在尝试获取用户 ID,而不是登录用户,而不是我拥有的所有用户。我想像在每个用户的警报中一样显示他们的(uid)。另外,我在平面列表中显示它们,当我在警报中设置item.uid 时,它显示(undefined)。但是,用户的所有其他数据都正确显示。这是我到现在为止所做的:
** users.js **
export default class usersList extends React.Component{
state = {
loading: false,
uid: '',
users: [],
items: []
};
componentDidMount() {
let itemsRef = f.database().ref('users').once('value').then(snapshot => {
var data = snapshot.val();
var items = Object.values(data);
this.setState({items});
console.log(snapshot.val())
});
}
renderItem({item}) {
return (
<View key={index} style={{width: '100%', overflow:'hidden', marginBottom: 5, justifyContent:'space-between', borderBottomWidth:1, borderColor: 'grey'}}>
<View>
<View style={{padding:5, width:'100%', flexDirection: 'row', justifyContent: 'space-between'}}>
<Text>{item.email}</Text>
</View>
</View>
</View>
)
}
render() {
return (
<View style={styles.container}>
<ScrollView>
{
this.state.items.length > 0
? <ItemComponent items={this.state.items} navigation={this.props.navigation} />
: <Text>No stores</Text>
}
</ScrollView>
</View>
);
}
}
//ItemComponent.js
export default class ItemComponent extends Component {
static propTypes = {
items: PropTypes.array.isRequired
};
render() {
return (
<View style={styles.itemsList}>
{this.props.items.map((item, index) => {
return (
<View key={index}>
<TouchableOpacity
onPress={ () => alert(item.uid)}>
<Text style={styles.itemtext}>{item.email}</Text>
</TouchableOpacity>
</View>
)
})}
</View>
);
}
}
【问题讨论】:
-
当我运行 console.snapshot.val() 时没有。我得到了这个输出>> [未处理的承诺拒绝:TypeError:未定义不是对象(评估'console.snapshot.val')] * app/Components/FamiliesList.js:31:32 in
- node_modules/promise/ setimmediate/core.js:37:14 in tryCallOne - node_modules/promise/setimediate/core.js:123:25 in - ... 来自框架内部的另外 8 个堆栈帧 -
如果你没有得到正确的数据记录,这意味着你正在做一个错误的数据库调用
console.log(snapshot.val())-- 运行这个 -
当我运行 console.log(snapshot.val()) 时,我得到了正确的数据,但是当我运行 console.snapshot.val() 时我没有,谢谢我不知道,因为我'm biggener,那么,你建议我做什么?因为一切都依赖于此,我被困住了,请问有什么可以帮助的吗?
-
在方法
componentWillMount()中运行console.log(snapshot.val())时是否获得所有ID? -
是的,这是日志输出的示例 "tnUdqJkl0pcCuQLWGHBANV4l8XV2": Object { "age": "33", "avatar": "gravatar.com/avatar", "email": "store4@store .com”、“fName”:“Store”、“lName”:“Store”、“phoneNum”:“1564237948”、“storeName”:“Store4”、}、“utZ60dru99ObFqrD042ZMBIlGN93”:对象{“头像”:“@ 987654322@", "email": "R@r.com", "name": "输入姓名", "username": "@name", },
标签: javascript firebase react-native firebase-realtime-database expo