Mongoose Map 类型与 TypeScript 类型不兼容

Posted

技术标签:

【中文标题】Mongoose Map 类型与 TypeScript 类型不兼容【英文标题】:Mongoose Map type incompatible with TypeScript type 【发布时间】:2022-01-22 01:35:33 【问题描述】:

我有以下模型架构接口:

import  Document  from 'mongoose';

export interface ILog 
  tags:  [key: string]: string [];


export interface ILogDocument extends ILog, Document 

还有架构:

const logSchema = new Schema<ILogDocument>(
  tags:  type: Map, of: String ,
);

所以我的架构出现以下类型错误:

TS2322: Type ' type: MapConstructor; of: StringConstructor; ' is not assignable to type 'SchemaDefinitionProperty< [key: string]: string; []> | undefined'.

我想使用正确的类型定义,我尝试了type: Schema.Types.Mixed 及其作品,但是有没有更好的方法来为tags: [key: string]: string [] 指定猫鼬类型?

【问题讨论】:

【参考方案1】:

[key: string]: string [] 不完全是 Map。您可以使用 TS 中的 Map 类型。

import  Document, Schema  from 'mongoose';

export interface ILog 
  tags: Map<string, string>;


export interface ILogDocument extends ILog, Document 

const logSchema = new Schema<ILogDocument>(
  tags:  type: Map, of: String 
);

【讨论】:

以上是关于Mongoose Map 类型与 TypeScript 类型不兼容的主要内容,如果未能解决你的问题,请参考以下文章

链接多个 Promise,使用 map 循环数组并创建 mongoose 文档?

typescri枚举enum

“typeof firebase”类型不存在属性“default”。错误

如何将 map() 与来自 axios 响应的数据一起使用?

利用Mongoose来结构化模式与验证

创建 Mongoose/MongoDB 常量文档