猫鼬不适用于销毁进口商品

时间:2018-10-15 15:47:38

标签: javascript express mongoose ecmascript-6

我一直在使用ES6开发一个简单的Express应用程序。在为猫鼬创建架构和模型时,我使用以下语法:

<div class="container">
  <div class="image"><img /></div>
  <div class="image"><img /></div>
  <div class="text"></div>
</div>

它会产生以下错误:.container { display: flex; justify-content: center; align-content: center; flexwrap: wrap; } .image { display: inline-block }

当我使用这种语法时,它会起作用:

import mongoose, { Schema } from 'mongoose';

const PostSchema = new Schema(
  {
    userId: {
        type: Schema.Types.ObjectId,
        required: true,
        ref: 'User'
    },
    video: {
        type: String,
        required: true
    },
    location: {
        type: { type: String },
        coordinates: []
    }
  },
  { timestamps: true }
);

PostSchema.index({ location: '2dsphere' });

const Post = mongoose.model('Post', PostSchema);
export default Post;

这是我的TypeError: _mongoose.Schema is not a constructor

import mongoose from 'mongoose';
const { Schema } = mongoose;
...

我的导入样式或Babel配置有问题吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

猫鼬不支持销毁进口商品。

https://mongoosejs.com/docs/faq.html#destructured-imports

猫鼬唯一支持的导入语法是import mongoose from 'mongoose'import * from 'mongoose'import { model } from 'mongoose'之类的语法不起作用。全局Mongoose对象存储Mongoose所需的类型,全局选项和其他重要属性。当您执行import { model } from 'mongoose'时,this中的model()值不是Mongoose全局值。

使用TypeScript时,您应该能够摆脱破坏接口和类型的麻烦,但仅此而已。