用猫鼬存储时间的数据类型

问题描述 投票:0回答:4

我必须使用 MEAN stack 为医生制定预约系统。在我的架构中,我必须存储时段的开始时间和结束时间。 Mongoose 没有存储时间的数据类型。我应该使用什么数据类型来存储时间?

javascript node.js mongodb mongoose mean-stack
4个回答
25
投票

Mongoose 的

Date
模式类型 不仅代表日期,还代表完整的日期和时间时间戳,因此这将是合乎逻辑的选择。

var slotSchema = new Schema({
    startTime: Date,
    endTime: Date,
    ...
});

11
投票

您可以在定义 Schema 时将

timestamps
属性设置为
true
,mongoose 将为您添加
createdAt
updatedAt
字段。当您执行任何更新操作时,Mongoose 还会为您更新
updatedAt
字段。

var schema = new Schema({
    // ... Schema properties
}, {
    timestamps: true
});

http://mongoosejs.com/docs/guide.html#timestamps


2
投票

Date 对象存储精确到毫秒的特定时刻。

参见:http://www.robertprice.co.uk/robblog/2011/05/javascript_date_time_and_node_js-shtml/

有关猫鼬的更多信息:http://mongoosejs.com/docs/guide.html


0
投票

对于仅限时间的场景没有直接的解决方案。被迫使用日期并不总是适用。我决定使用类型字符串和使用正则表达式的自定义验证。

  classTiming: {
    type: String,
    validate: {
      validator: function (v) {
        if (!v) {
          return true;
        }
        return /([01]?[0-9]|2[0-3]):[0-5][0-9]/.test(v);
      },
      message: (props) => `${props.value} is not valid time!`,
    },
  },

时间似乎是一个被忽视的类型。无论是 zod 还是 joi,在撰写本文时都需要正则表达式方法:

  classTiming: z
    .string()
    .regex(/([01]?[0-9]|2[0-3]):[0-5][0-9]/)
    .optional()
    .or(z.literal("")),
    classTiming: Joi.string()
      .regex(/([01]?[0-9]|2[0-3]):[0-5][0-9]/)
      .empty(""),
© www.soinside.com 2019 - 2024. All rights reserved.