gpt4 book ai didi

javascript - Firebase/React 查询用户名

转载 作者:行者123 更新时间:2023-12-01 01:38:34 25 4
gpt4 key购买 nike

我试图通过获取发布它的用户的名称来使我的 Post 组件正常工作。现在,它的工作方式是我使用用户登录(通过 Google 或使用电子邮件/密码组合),然后我获取该用户的数据,如 auth.currentUser.displayName 或电子邮件、uid 等...

当我发帖时,它会获取用户的 ID,即 uid,因为它是唯一的。

现在,当我加载帖子时,我得到了 post.name,它最初是用户的名字(直到我将其更改为存储 uid),但是现在我得到了用户的ID....

所以我的问题是:如何获取用户名而不是 ID?

This is the structure in my database

如上图所示,帖子中的名字就是用户的ID。我想在显示帖子时获取用户的用户名。我怎样才能做到这一点?

我希望它有意义..

这是我的 render() 代码:

render() {
const { message, posts, error } = this.state;
const isInvalid = message === '';

return (
<div>
<form onSubmit={this.onSubmit}>
<p>
Posting as:{' '}
{auth.currentUser.displayName || auth.currentUser.email}
</p>
<textarea
value={message}
onChange={event =>
this.setState(byPropKey('message', event.target.value))
}
name="message"
placeholder="Message..."
/>
<button disabled={isInvalid} type="submit">
Post
</button>

{error && <p>{error.message}</p>}
</form>

<div>
<ul>
{posts.map(post => (
<li key={post.id}>
<h4>{post.message}</h4>
<p>posted by: {post.name}</p>
{post.name === auth.currentUser.uid ? (
<button
type="submit"
onClick={() => {
database.ref(`/posts/${post.id}`).remove();
}}
>
Delete Post
</button>
) : null}
</li>
))}
</ul>
</div>
</div>
);
}

我显示帖子的方式:

componentDidMount() {
const postsRef = database.ref('posts');
postsRef.on('value', snapshot => {
let posts = snapshot.val();
let newState = [];
for (let post in posts) {
newState.push({
id: post,
name: posts[post].name,
message: posts[post].message
});
}
this.setState({
posts: newState
});
});
}

和 onSubmit:

onSubmit = event => {
const { message } = this.state;

db.doCreatePost(auth.currentUser.uid, message)
.then(() => {
this.setState({
message: '',
error: null
});
})
.catch(error => {
this.setState(byPropKey('error', error));
});

event.preventDefault();
};

最佳答案

您可以这样获取用户名。

firebase.database().ref('/users/' + post.name).once('value').then(function(snapshot) {
const 用户名 = (snapshot.val() && snapshot.val().用户名)
})

  1. 使用“post.name”作为对用户的引用。
  2. 在“用户”集合中搜索与该用户 ID 匹配的确切值。
  3. 从快照中获取“用户名”值。

希望对你有帮助!

关于javascript - Firebase/React 查询用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com