带有打字稿的节点js:定义接口时猫鼬模式日期类型属性出错
Node js with typescript: Error in mongoose schema date type property when defining an interface
我有一个如下所示的猫鼬模式:
import mongoose from 'mongoose';
const { Schema } = mongoose;
const tourSchema = new Schema<ITour>({
name: String,
price: {
type: Number,
default: 0,
},
description: {
type: String,
trim: true,
},
createdAt: {
type: Date,
default: Date.now(),
select: false,
},
startDates: [Date],
});
export const Tour = mongoose.model("Tour", tourSchema);
还有一个我要添加到架构中的接口:
interface ITour extends mongoose.Document{
name: string;
price: number;
description: string;
createdAt: Date;
startDates: Date[];
}
当我向 属性 添加“默认值”属性 时,在创建的 属性 中出现类型错误。当我删除默认 属性 时,一切正常。 createdAt 的类型是 DateConstructor,Date.now() 的 return 类型是一个数字。我该如何解决这个问题?
您可以使用内置的时间戳选项 Schema.It 会自动将 createdAt 字段添加到您的架构中。 link
const tourSchema = new Schema<ITour>({
name: String,
price: {
type: Number,
default: 0,
},
description: {
type: String,
trim: true,
},
{
timestamps: true
},
startDates: [Date],
});
我有一个如下所示的猫鼬模式:
import mongoose from 'mongoose';
const { Schema } = mongoose;
const tourSchema = new Schema<ITour>({
name: String,
price: {
type: Number,
default: 0,
},
description: {
type: String,
trim: true,
},
createdAt: {
type: Date,
default: Date.now(),
select: false,
},
startDates: [Date],
});
export const Tour = mongoose.model("Tour", tourSchema);
还有一个我要添加到架构中的接口:
interface ITour extends mongoose.Document{
name: string;
price: number;
description: string;
createdAt: Date;
startDates: Date[];
}
当我向 属性 添加“默认值”属性 时,在创建的 属性 中出现类型错误。当我删除默认 属性 时,一切正常。 createdAt 的类型是 DateConstructor,Date.now() 的 return 类型是一个数字。我该如何解决这个问题?
您可以使用内置的时间戳选项 Schema.It 会自动将 createdAt 字段添加到您的架构中。 link
const tourSchema = new Schema<ITour>({
name: String,
price: {
type: Number,
default: 0,
},
description: {
type: String,
trim: true,
},
{
timestamps: true
},
startDates: [Date],
});