在代码中创建Node.js枚举以匹配数据库中的值列表

时间:2019-05-21 13:35:39

标签: node.js enums

我有一个要存储在数据存储区中的有效值列表。该列表现在大约有20个条目,并且可能会增加到100个左右,甚至更多。

我认为将其存储在数据存储中而不是仅存储在代码中有多种原因。我希望能够维护该列表及其元数据,并使其他服务可以访问它,因此它看起来像微服务数据存储。

但是在代码中,我们要确保仅传递列表中的值,并且通常可以对它们进行硬编码。因此,我们想创建一个可在代码中使用的枚举,以确保传递有效值。

我创建了一个简单的node.js,可以使用数据存储中的枚举生成一个JS文件。可以在文件更改时或按计划重新生成该文件。但是,与使用该枚举的任何node.js应用程序共享枚举文件并非易事。

有人做过这样的事情吗?有什么原因会导致这种方法不好?欢迎任何反馈。

2 个答案:

答案 0 :(得分:2)

this answer的后备支持,它描述了一种在JavaScript中创建“枚举”的方式:您可以从服务器中获取常量列表(通过HTTP调用),然后在代码中生成枚举,而无需创建和加载JavaScript源文件。

鉴于您已经从后端加载了var PublicDocuments = System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonDocuments); if (result == DialogResult.Yes) { subPath = PublicDocuments + @"\"+ token + @"\Tests\"; } else if (result == DialogResult.No) { subPath = PublicDocuments + @"\Tests\"; } (在这里我对其进行了硬编码):

enumConstants

对于代码分析或使用智能编辑器来说,它不是理想的选择,因为未明确定义对象,并且编辑器会抱怨,但仍然可以使用。

答案 1 :(得分:1)

另一种方法是只使用数组并查找其成员。

const members = ['first', 'second', 'third'...]

// then test for the members
members.indexOf('first') // 0
members.indexOf('third') // 2
members.indexOf('zero') // -1
members.indexOf('your_variable_to_test') // does it exist in the "enum"?

任何> = 0的值都将成为列表的成员。 -1将不是会员。这不会像冻结一样“锁定”对象(如上),但是我发现它足以满足我的大多数类似情况。