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

能否在Mongoose Schema中使用JavaScript变量设置默认值?

问题解答

可以用变量设置Mongoose Schema字段的默认值,但你当前的写法存在关键问题——直接赋值变量的话,默认值会固定为Schema定义时CurrentUser的静态值,如果后续CurrentUser发生变化,新创建的文档依然会使用最初的那个值,这通常不符合动态获取当前用户的需求。

正确的做法是给default传入一个函数,Mongoose会在创建文档时调用这个函数,返回当前最新的CurrentUser值:

const momentschema = new mongoose.Schema({
    username:{
      type:String,
      default: () => CurrentUser // 通过函数返回动态值
    },
    date : String ,
    time : String,
    place:String,
    color:String,
    saw:String,
    response:String, 
},{
    timestamps: true 
})

这样每次创建新文档时,都会获取当前最新的CurrentUser值作为username的默认值。

需要注意的细节:

  • 要确保CurrentUser在函数执行时已定义且有有效值,避免出现undefined的情况
  • 如果CurrentUser是异步获取的(比如从请求上下文、数据库查询),不能直接用这种同步函数,需要在创建文档时手动指定username,或者使用Mongoose的预保存中间件(pre-save hook)来处理异步逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:50:17