xer*_*ant 11 mongodb node.js express typescript
ts 编译器说“文档”类型不存在任何属性。
似乎因此无法设置模型上的任何属性。如果我将用户对象打印到控制台,我得到的只是 {"_id":"long hex id number"}
我的模型配置如下:
用户.ts
import * as mongoose from 'mongoose';
import * as crypto from 'crypto';
import * as jwt from 'jsonwebtoken';
var userSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
firstMidname: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
hash: String,
salt: String
});
userSchema.methods.setPassword = setPassword;
userSchema.methods.validPassword = validPassword;
userSchema.methods.generateJwt = generateJwt;
export = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)
api连接点api.ts
import * as express from 'express';
import * as mongoose from 'mongoose';
import * as passport from 'passport';
var User = mongoose.model('User');
var router = express.Router();
router.post('/', createUser);
function createUser(req, res){
var user = new User();
console.log(user);
user.firstMidName = req.body.firstName;
user.lastName = req.body.lastName;
user.setPassword(req.body.password);
user.save((err) => {
console.log("saving user");
var token;
token = user.generateJwt();
res.status(200);
res.json({
'token': token
});
});
}
export = router;
Run Code Online (Sandbox Code Playgroud)
如何修复或解决此问题?user.save
块中的任何内容都不会执行。
编辑:这两件事似乎无关。我现在可以保存到数据库但是打字稿错误仍然存在。这是预期的行为吗?
小智 12
该mongoose.model
方法接受默认为 的类型,该类型mongoose.Document
不会在User
文档中包含您想要的属性。
要解决此问题,请创建一个描述您的架构和扩展的接口mongoose.Document
:
export interface UserDoc extends mongoose.Document {
email: {
type: string;
unique: boolean;
required: boolean;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后,将其作为模型的类型传递:
export = mongoose.model<UserDoc>('User', userSchema);
归档时间: |
|
查看次数: |
12746 次 |
最近记录: |