【问题标题】:TypeScript's dictionary type in Mongoose schema?Mongoose 模式中 TypeScript 的字典类型?
【发布时间】:2019-01-13 21:01:14
【问题描述】:

TS 中的字典类型如下:

{
   [key: string]: string;
}

但是,在 mongoose 中声明我自己的架构时,它失败了。

const users = new Schema({
   [key: string]: String,
});

我也试过了:

const users = new Schema({
   [String]: String,
});

但也不起作用。帮助表示赞赏

编辑:我只希望users 是一个对象,其键为string,其值为string。对象也不能为空

【问题讨论】:

  • 你试过只用key: String吗?
  • @Luca 这很奇怪,因为当我发送帖子请求时,api 会将我的整个对象覆盖为 { _id: someRandomHash }...
  • 您是否通过其他键传递未定义的数据? Ofc 它将添加 _id 字段
  • 如果需要参数,则无法定义类型。
  • 男士们,我只希望 users 成为键是字符串且不是空对象的对象。期待任何提示

标签: javascript node.js mongodb typescript mongoose


【解决方案1】:

您不能将类型作为参数传递给函数或初始化程序。您可以将它分配给一个变量并像这样传递变量:

interface MySchema {
  [key: string]: string
}

let data: MySchema = {
  v1: 'abc',
  v2: '123'
}

const users = new Schema(data);

如果Schema 是泛型,您可以像这样使用菱形运算符:

interface MySchema {
  [key: string]: string
}

const users = new Schema<MySchema>({
  v1: 'abc',
  v2: '123'
});

【讨论】:

  • 我可以在moongose中使用接口?!
  • 是的,这只是一个例子。我的问题是如何在 mongoose 中从 typescript 中执行类似界面的操作:P
  • 您可以在任何打字稿文件中使用接口。
猜你喜欢
  • 2021-10-17
  • 2014-08-07
  • 2019-10-14
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 2019-02-03
相关资源
最近更新 更多