【发布时间】:2019-12-03 16:33:49
【问题描述】:
我正在尝试使用 TypeScript 在 NodeJS 中创建一个简单的控制器 API,但是当我为模型分配值时出现错误 ts(2345)。
这是我的用户模型:
import mongoose, {Schema} from 'mongoose'
const userSchema: Schema = new Schema({
_id: Schema.Types.ObjectId,
login: {
type: String,
unique: true,
required: true
},
email: {
type: String,
unique: true,
match: (value: string) => /\S+@\S+\.\S+/.test(value),
required: true
},
password: {
type: String,
required: true
},
createdAt: {
type: Date,
default: Date.now
}
})
export default mongoose.model('User', userSchema)
和控制器:
import User from '../models/User'
import {Request, Response} from 'express'
export class UserController {
public addNewUser (req: Request, res: Response) {
const {login, email, password} = req.body
// some code
const newUser = new User({
// ts error:
// Argument of type '{ login: any; email: any;
// password: any; date: number; }' is not assignable
// to parameter of type 'DeepPartial<Document>'.
// Object literal may only specify known properties,
// and 'login' does not exist in type
// 'DeepPartial<Document>'.ts(2345)
login,
email,
password,
date: Date.now()
})
}
}
我找到了解决此错误的方法:
const newUser = new User({
login,
email,
password,
createdAt: Date.now(),
...req.body
})
但我不确定这是一个好方法,仍然不知道为什么我会收到这个 ts 错误。有什么帮助吗?
【问题讨论】:
标签: node.js typescript rest api mongoose