reactjs - 在 Atlas Cluster 中使用 MongoDB Stitch App 处理用户
问题描述
我有一个 MongoDB Stitch 应用程序,它使用电子邮件/密码身份验证。这会在 Stitch App 中创建用户,我可以在页面上进行身份验证。我的数据库也有一个 MongoDB Atlas Cluster。在集群中,我有一个带有项目名称的数据库,然后是一个用于“匹配”的集合。因此,当我将“匹配”插入集合时,我可以从 Stitch 发送经过身份验证的用户 ID,这样我就有办法查询特定用户的所有匹配。但是如何在缝合中向“用户”集合添加附加值?该用户部分在 Stitch 中使用您选择的任何身份验证类型(电子邮件/密码)预先打包。但是对于我的应用程序,我希望能够在“用户”集合上存储“MatchesWon”或“GamePreference”字段之类的内容。
我是否应该像在集群中为“匹配”创建一个集合一样为“用户”创建一个集合,然后插入从 Stitch 提供的用户 ID 并处理该集合中的字段?好像我会复制用户数据,但我不确定我是否理解另一种方法。仍在学习,我感谢任何反馈/建议。
解决方案
目前没有办法将您自己的数据存储在内部用户对象上。相反,您可以使用身份验证触发器来管理用户。以下片段取自这些文档。
exports = function(authEvent){
// Only run if this event is for a newly created user.
if (authEvent.operationType !== "CREATE") { return }
// Get the internal `user` document
const { user } = authEvent;
const users = context.services.get("mongodb-atlas")
.db("myApplication")
.collection("users");
const isLinkedUser = user.identities.length > 1;
if (isLinkedUser) {
const { identities } = user;
return users.updateOne(
{ id: user.id },
{ $set: { identities } }
)
} else {
return users.insertOne({ _id: user.id, ...user })
.catch(console.error)
}
};
推荐阅读
- python - 在 Python 中从 PDF 文件的文本中添加页码
- r - 如何创建 R 代码来组织我的文件?
- javascript - 如何同时执行计时?
- python-3.x - Discord bot 恢复消息的附件并通过嵌入将其发送到另一个频道
- jquery - 我正在向服务器发出 Ajax 发布请求,所有数据都很好,但我的名字和姓氏正在更新为“未定义”
- python-3.x - 使用 StratifiedShuffleSplit 时计算召回指标
- c++ - 如何解决无休止的时期?
- nlp - 文本分类新技术nlp
- php - 如何解决laravel中的数组推送问题
- swiftui - 显示带有列表的详细信息后的 SwiftUI 人工制品