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);
然后我用它
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} 
小智 14
我遇到了这个问题并通过添加以下内容来修复它tsconfig.json
"esModuleInterop": true
然后我就可以正常导入了
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);
第二种方式——
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;
| 归档时间: | 
 | 
| 查看次数: | 5495 次 | 
| 最近记录: |