[英]Converting string to a type (node.js)
我知道这似乎是一个奇怪的问题,但目前我正在创建一个网络服务器来使用 mongoose 将数据保存到 mongodb 数据库。 要使用它,我需要创建一个 model ,其架构基本上定义了我可以搜索到的值以及它们应该是的类型(字符串、数字等)
正如我之前所说,因为它是一个网络服务器,所以我想让它这样网络服务器将创建 model 和模式,并在请求中包含一个主体 object。 但是,有一个问题。 我只能将类型(字符串、数字等)作为字符串传递。 我想出了一个将值解析为类型的解决方案,即下面的代码
getTypeByString: function (string) {
if (string == 'String') {
return String
}
if (string == 'Number') {
return Number
}
if (string == 'Array') {
return Array
}
if (string == 'Object') {
return Object
}
}
但是,我觉得可能有一个更简单的解决方案。 如果有或没有,请告诉我,我想最终在 GitHub 上发布我的代码。 我希望它尽可能动态和简单。 先感谢您
关于从字符串中获取定义的类型,您可以使用 object 来定义类型并使用字符串作为键。
const DefinedTypes = {
String: String,
Number: Number,
Array: Array,
Object: Object,
CustomType: classOfCustomType
};
使用它。
const typeAsString = 'String';
const type = DefinedTypes[typeAsString];
您可以使用 switch 语句使代码更简单一些:
getTypeByString: function(stype){
switch(stype){
case "String": return String;
case "Number": return Number;
case "Array": return Array;
case "Object" : return Object;
default: return null; // or throw an error
};
};
String
、 Number
、 Array
和Object
也是global
变量的属性(如果您在浏览器中, window
变量)。
您可以通过评估自己检查:
global['String'] === String // true
因此,您可以只使用字符串在global
object 中查找类型,然后返回:
getTypeByString: function (string) {
if (['String', 'Number', 'Array', 'Object'].includes(string)) // be sure that you are actually returning a type
return global[string];
return null;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.