Bil*_*ill 7 mongoose node.js typescript
使用 ES6 导入和导出我觉得我应该能够将导入声明为
import mongoose, { Schema, Document } from 'mongoose';但我收到错误Module '"mongoose"' has no default export.
以下确实有效,但显然不是进行此导入的正确方法。导出默认 ID 也想删除。
import * as mongoose from 'mongoose';
import { Schema, Document } from 'mongoose';
export interface IUser extends Document {
email: string;
password: string;
}
const UserSchema: Schema = new Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true }
});
export default mongoose.model<IUser>('User', UserSchema);
Run Code Online (Sandbox Code Playgroud)
然后我用它
import UserModel, { IUser } from '../models/example'
import * as bcrypt from 'bcrypt';
class User {
static register = async (req: Request, res: Response) => {
const email = req.body.email;
const password = req.body.password;
const alreadyRegistered = await UserModel.findOne({email}).exec();
if (!alreadyRegistered) {
const hashedPassword = await bcrypt.hash(password,10);
if (!hashedPassword) {
res.status(500).send({ message: "Failed to encrypt your password" });
} else {
const user = new UserModel(<IUser>{email:email, password:hashedPassword});
const saved = await user.save();
if (!saved) {
res.status(500).send({ message: "Failed to register you" });
} else {
res.status(200).send({ message: "You are now registered" });
}
}
} else {
res.status(400).send({ message: "You have already registered" });
}
};
}
export {User}
Run Code Online (Sandbox Code Playgroud)
小智 14
我遇到了这个问题并通过添加以下内容来修复它tsconfig.json
"esModuleInterop": true
Run Code Online (Sandbox Code Playgroud)
然后我就可以正常导入了
import mongoose from 'mongoose'
尝试这个
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true }
});
module.exports = mongoose.model('User', UserSchema);
Run Code Online (Sandbox Code Playgroud)
第二种方式——
import * as mongoose from 'mongoose';
type UserSchema = IUser & mongoose.Document;
const User = mongoose.model<UserSchema>('User', new mongoose.Schema({
email : { type: String, required: true, unique: true },
password: { type: String, required: true }
}));
export = User;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5495 次 |
| 最近记录: |