我一直在使用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配置有问题吗? 谢谢。
答案 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时,您应该能够摆脱破坏接口和类型的麻烦,但仅此而已。