繁体   English   中英

将字符串转换为类型(node.js)

[英]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
    };
};

StringNumberArrayObject也是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM