Mongoose添加timestamps属性后代码编译失败求助
问题原因与解决方案
你的代码错误出在逗号运算符的误用:({字段定义}, {timestamps:true})这种写法会让JavaScript执行第一个对象后,直接返回第二个对象,也就是说传给mongoose.model的Schema配置只有{ timestamps: true },完全丢失了任务的字段定义,Mongoose自然无法编译通过。
修正后的代码(推荐写法)
const mongoose = require("mongoose"); // 明确创建Schema实例,字段定义与选项分离,可读性更高 const taskSchema = new mongoose.Schema({ title: { type: String, required: true, trim: true, }, description: { type: String, required: true, trim: true, minLength: 100, }, completed: { type: Boolean, default: false, }, }, { timestamps: true }); // 将timestamps作为Schema的选项参数传入 const Task = mongoose.model("Task", taskSchema); module.exports = Task;
精简写法(不单独创建Schema变量)
如果不想额外声明Schema变量,也可以直接在mongoose.model中嵌套创建:
const mongoose = require("mongoose"); const Task = mongoose.model( "Task", new mongoose.Schema({ title: { type: String, required: true, trim: true, }, description: { type: String, required: true, trim: true, minLength: 100, }, completed: { type: Boolean, default: false, }, }, { timestamps: true }) ); module.exports = Task;
修正后,Mongoose会自动为你的Task模型添加createdAt和updatedAt两个日期字段,满足你获取任务创建时间的需求。
内容的提问来源于stack exchange,提问作者Shivang Mathur
相关产品推荐
相关产品推荐

