Node.js 如何在Mongoose.js模式中表示ES6映射

Node.js 如何在Mongoose.js模式中表示ES6映射,node.js,mongodb,typescript,ecmascript-6,mongoose-schema,Node.js,Mongodb,Typescript,Ecmascript 6,Mongoose Schema,我正在为“specs”属性使用一个ES6映射,我在我的TypeScript界面中表示了它,如下所示: import { IModel } from './model'; export interface IProduct extends IModel { name: string; description: string; specs: {[key: string]: string }; img: string[]; } 不过,这在猫鼬模式中似乎不起作用。失败后,我在模式中尝

我正在为“specs”属性使用一个ES6映射,我在我的TypeScript界面中表示了它,如下所示:

import { IModel } from './model';

export interface IProduct extends IModel {
  name: string;
  description: string;
  specs: {[key: string]: string };
  img: string[];
}
不过,这在猫鼬模式中似乎不起作用。失败后,我在模式中尝试了以下代码,但似乎也不起作用:

const ProductSchema = new Schema({
  name: String,
  description: String,
  specs: [{key: String, value: String}],
  img: String[]
});

如果有人能帮我找到正确的方法,我将不胜感激。

第二个代码片段遇到了什么问题?如果一个映射不应该是可搜索的,那么它很可能应该是一个键/值对数组。如果是的话,那么规范应该被转移到单独的集合中并被引用。@estus-Hi,谢谢您的回复。第二个代码段的问题是,模式需要一个key:value对数组,但ES6映射实际上是一个具有key:value对数组的对象(正如TS接口所反映的),但是以这种方式编写它不起作用:
{[{key:String,value:String}}
。这样写实际上会导致编译器错误。这就是为什么我试着按照我原来的帖子所示的方式来写,但当我运行这个应用程序时,它就不起作用了。我将尝试按照您的建议将其移动到一个单独的集合。我想您需要坚持使用键/值数组数组,并执行
array。from(specsMap)
new Map(specsArray)
在请求前后进行变换。如果你经常使用插件,它可以被处理。关于猫鼬跟踪器可能值得一提。你在第二段代码中遇到了什么问题?如果一个映射不应该是可搜索的,那么它很可能应该是一个键/值对数组。如果是的话,那么规范应该被转移到单独的集合中并被引用。@estus-Hi,谢谢您的回复。第二个代码段的问题是,模式需要一个key:value对数组,但ES6映射实际上是一个具有key:value对数组的对象(正如TS接口所反映的),但是以这种方式编写它不起作用:
{[{key:String,value:String}}
。这样写实际上会导致编译器错误。这就是为什么我试着按照我原来的帖子所示的方式来写,但当我运行这个应用程序时,它就不起作用了。我将尝试按照您的建议将其移动到一个单独的集合。我想您需要坚持使用键/值数组数组,并执行
array。from(specsMap)
new Map(specsArray)
在请求前后进行变换。如果你经常使用插件,它可以被处理。也许猫鼬追踪器值得一提。