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

Mongoose技术问询:如何为Schema字段设默认值并创建集合?

给Mongoose Schema字段设置默认值的实现方案

没问题!要给你的Schema字段添加默认值,只需要在每个字段的定义对象里加上default属性就行,我已经帮你把原代码修改成符合需求的版本了:

var Repository = require('./base/Repository');
var Connection = require('./base/Connection');
// 为每个字段添加default属性来设置默认值
var scm = Repository.schema({ 
  userId: { 
    type: String, 
    default: '' // 根据你的需求调整,比如也可以设为null
  },
  text: { 
    type: String, 
    default: '' // 若需要默认提示文本,可改成类似'用户未填写反馈'这样的内容
  },
  date: { 
    type: Number, 
    default: Date.now // 自动取当前时间戳,Mongoose会在创建文档时自动执行这个函数
  }
});
scm.index({date:1});
scm.index({userId:1});
var repo = Repository.create('Feedback', scm, Connection);
module.exports = new repo();

这里有个小细节要注意:对于date字段的默认时间戳,我用的是Date.now而不是Date.now()。前者是把函数本身传给Mongoose,它会在创建新文档的时候才调用这个函数,这样每次生成的时间都是最新的;如果用后者,会在定义Schema的时候就执行一次,之后所有新文档的date都会是同一个固定时间,这显然不是你想要的效果。

如果某些字段不需要默认值,直接保留原来的写法就行,比如如果userId必须由前端传入,那就去掉它的default属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:09:11