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

MongoDB仅首次访问/mysafe时创建对象,无User Schema safe字段的实现方案

你完全不需要修改User Schema就能实现需求,无需新增额外字段。

实现逻辑非常直接:每次用户访问/mysafe路径时,先到Safe集合中查询是否存在author等于当前登录用户ID的文档,有就直接拿已有的文档ID重定向,没有再执行新建逻辑即可。

修改后的参考代码如下:

app.get('/mysafe', async (req, res) => {
  // 先查询当前用户是否已经创建过safe对象
  const existingSafe = await Safe.findOne({ author: req.user._id });
  if (existingSafe) {
    // 已存在则直接重定向到对应路径
    return res.redirect(`/mysafe/${existingSafe._id}`);
  }
  // 不存在再新建对象
  const safe = new Safe();
  safe.author = req.user._id;
  await safe.save(); // 注意原代码漏了await,需等待写入完成再重定向
  res.redirect(`/mysafe/${safe._id}`);
})

额外优化建议:

  • 给Safe集合的author字段加单字段索引,能大幅提升查询效率,避免用户量增长后查询变慢
  • 如果业务规则要求一个用户只能对应一个safe对象,可以直接在Safe Schema的author字段加unique: true约束,从数据库层面避免重复创建的风险

内容的提问来源于stack exchange,提问作者zzz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:02