gpt4 book ai didi

node.js - 类型 'x' 上不存在 Mongoose 属性 'Document'

转载 作者:可可西里 更新时间:2023-11-01 09:54:22 27 4
gpt4 key购买 nike

ts 编译器说“文档”类型上不存在任何属性。

似乎正因为如此,模型上的所有属性都无法设置。如果我将用户对象打印到控制台,我得到的只是{"_id":"长十六进制 ID 号"}

我的模型配置如下:

用户.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);

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;

如何修复或解决此问题? user.save block 中的任何内容都不会执行。

编辑: 这两件事似乎无关。我现在可以保存到数据库,但是 typescript 错误仍然存​​在。这是预期的行为吗?

最佳答案

mongoose.model方法接受默认为 mongoose.Document 的类型,它不会在您的 User 上具有您想要的属性文档。

要解决此问题,请创建一个接口(interface)来描述您的模式并扩展 mongoose.Document :

export interface UserDoc extends mongoose.Document {
email: {
type: string;
unique: boolean;
required: boolean;
}
...
}

然后,将其作为模型的类型传递:

export = mongoose.model<UserDoc>('User', userSchema);

关于node.js - 类型 'x' 上不存在 Mongoose 属性 'Document',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com