如何实现登录用户专属收支的增删及数据隔离功能?
实现用户专属收支管理的核心思路
一、模型调整
- 给Expense模型新增用户关联字段,比如
userId,用来关联User文档的_id,让每笔收支都能绑定到具体用户。
二、收支操作逻辑优化
添加收支
- 通过JWT认证解析出当前登录用户的
_id,创建Expense实例时将该_id赋值给新增的userId字段,再执行保存操作,确保收支归属当前用户。
删除收支
- 接收待删除的收支ID后,要么先查询该收支文档,校验其
userId是否与当前用户_id一致,一致才执行删除;要么直接在删除查询条件中同时指定收支ID和当前用户ID,确保只能删除自身的收支。
查询收支
- 查询时将当前用户的
_id作为查询条件,仅返回userId匹配的收支数据,保证数据仅本人可见。
三、当前代码的待调整点
Expense Schema 补充关联字段
当前Schema缺少用户关联逻辑,需添加对应字段:
const expenseSchema = new mongoose.Schema( { date: Date, detail: String, amount: Number, category: String, userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true } // 新增用户关联字段 } )
添加支出控制器优化
当前控制器未关联用户,需从JWT解析出用户ID,赋值给Expense的userId字段后再执行保存操作。
内容的提问来源于stack exchange,提问作者Anshu
相关产品推荐
相关产品推荐

