总结: 我正在开发一个具有登录功能的简单 MERN 堆栈待办事项应用程序。我还没有实现登录,因为我不知道如何去做。每个待办事项当前都作为一个单独的文档(具有属性 _id、名称和描述)存储在“项目”集合中。我正在使用猫鼬。
问题:我如何更新我的数据库结构,以便为每个注册用户存储登录凭据,并且只获取登录用户的待办事项?我可以做到的一种方法是将用户凭据存储在单独的集合中,并向每个待办事项文档添加“userID”属性,以便我可以通过 userID 获取它们:
item
{ _id:39v6m8356nv45435
title:"Buy milk",
description:"no description",
userID:09239bfd234g }
或者我应该将用户凭据及其所有待办事项存储在一个文档中吗?如果我这样做,我如何从数组中访问单个待办事项,或向数组添加更多项目?
user
{ _id:980w3709b476jh,
username:"John",
password:"weak",
todos: [{todo1},{todo2}]
}
或者,我应该做点别的吗?
我不是在寻找完美的答案,但如果有人能指出我正确的方向,那将不胜感激。任何文章或视频也会有所帮助。
答案 0 :(得分:0)
我假设,您不必将一个用户的 ToDos 共享给另一个用户,如果是这种情况,您只能将它们存储在同一个文档中(但是,MongoDB BSON 文档大小的最大限制为 {{1 }})
您可以查看 MongoDB 数组运算符,例如
16MB
向添加项添加项目$push
从添加中删除项目$pull
根据不同条件仅获取某些项目(例如唯一的 $filter
)您还可以检查 todo_id
(如果您想使用聚合管道可能会很有用`