计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型

Posted

技术标签:

【中文标题】计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型【英文标题】:A computed property name must be of type 'string', 'number', 'symbol', or 'any' 【发布时间】:2021-08-31 02:54:28 【问题描述】:

我有 const 语言数组。我希望所有语言都用作我的模式对象的键。我已经将我的语言数组设置为常量并循环遍历它以获取每种语言的值并将其导出,现在我将其导入到我的架构中并将其用作关键变量,但我遇到了错误 language constant

const languages = [
  "Albanian",
  "Amharic",
  "  Arabic ",
  "  Armenia",
  "  Azerbaij",
  "  Basque ",
  "  Belarusi",
  "  Bengali    ",
  "  Bosnian    ",
  "  Bulgaria",
  "  Catalan    ",
  "  Cebuano",
  "  Chinese",]

export function languageSelector() 
  for (let i = 0; i < languages.length - 1; i++) 
    return languages[i];
  

schema object

import * as mongoose from "mongoose";
import  visibilityPlugin  from "./plugins/visibility";
import  languageSelector  from "./constant";

const ObjectId = mongoose.Schema.Types.ObjectId;

export const TranscriptSchema = mongoose.Schema(
  [languageSelector]: [
    
      startTime: 
        type: String,
      ,
      endTime: 
        type: String,
      ,
      text: 
        type: String,
      ,
    ,
  ],
  confidenceLevel: 
    type: Number,
  ,
  videoRef: 
    type: ObjectId,
    required: true,
    ref: "videos",
  ,
);

【问题讨论】:

languageSelector 是一个函数。你想要一个函数作为键吗? @TusharShahi 不,我希望语言作为键,对于每种语言我想在模式中创建相同的 obj 那么您将不得不导出语言并导入相同的语言。哪种语言应该是您在集合中的键,还是您希望所有语言都有不同的键? @TusharShahi 我希望所有语言都是关键 首先,您的函数将始终返回第一种语言“阿尔巴尼亚语”。它的移动距离不超过 0。 【参考方案1】:

为什么会出错:您将函数作为键传递。

而不是在那里使用你的功能:

    导出语言 将它们导入您的文件并循环遍历它们。 向 schemaObject 动态添加键。

例子:

let schemaObject = 
  confidenceLevel: 
    type: Number,
  ,
  videoRef: 
    type: ObjectId,
    required: true,
    ref: "videos",
  ,
;

for (let i = 0; i < languages.length - 1; i++) 
    schemaObject[languages[i]] = [
    
      startTime: 
        type: String,
      ,
      endTime: 
        type: String,
      ,
      text: 
        type: String,
      ,
    ,
  ];



【讨论】:

以上是关于计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型的主要内容,如果未能解决你的问题,请参考以下文章

XML基础

PHP 简学

PHP 简学

将带有美元符号的字符串转换为数字

在 TypeScript 中使用符号作为对象键类型

ava.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号