计算的属性名称必须为"字符串"、"数字"、"符号"或"任意"类型。



我有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",
},
});

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

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

  1. 导出语言
  2. 将它们导入到文件中并循环使用
  3. 将密钥动态添加到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,
},
},
];
}

最新更新