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
相关产品推荐
相关产品推荐

