You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现登录用户专属收支的增删及数据隔离功能?

实现用户专属收支管理的核心思路

一、模型调整

  • 给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:10:37