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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:55:16