在Javascript键值对象中,如何从值中删除引号

时间:2017-06-07 03:28:56

标签: javascript json key-value

从远程数据库中,我检索表的模式并获取以下形式的JSON对象:

{ Id:                 
   { type: 'INT',          
     allowNull: false,     
     defaultValue: null,   
     primaryKey: false },  
  Prefix:                    
   { type: 'NVARCHAR',     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
  FirstName:               
   { type: 'NVARCHAR',     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
  Assets:               
   { type: 'INT',          
     allowNull: false,     
     defaultValue: null,   
     primaryKey: false },  
  Role:          
   { type: 'NVARCHAR',     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
}

我想将每个列的type(此示例中为Id,Prefix,FirstName,Assets,Role)转换为DataTypes.INTEGERDataTypes.STRING形式的内容,以便最后我们得到:

 { Id:                 
   { type: DataTypes.INTEGER,          
     allowNull: false,     
     defaultValue: null,   
     primaryKey: false },  
  Prefix:                    
   { type: DataTypes.STRING,     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
  FirstName:               
   { type: DataTypes.STRING,     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
  Assets:               
   { type: DataTypes.INTEGER,          
     allowNull: false,     
     defaultValue: null,   
     primaryKey: false },  
  Role:          
   { type: DataTypes.STRING,     
     allowNull: true,      
     defaultValue: null,   
     primaryKey: false },  
}

请注意区别,type值不再是字符串。

最初我正在尝试以下方法:

var DataTypes = {
    NVARCHAR: 'STRING',
    INT: 'INTEGER',
    VARCHAR: 'STRING',
    DATETIME: 'DATE',
    FLOAT: 'FLOAT',
    NCHAR: 'STRING'
}

Object.keys(schema).forEach(function(fieldName) {
        types[schema[fieldName]['type']] ? schema[fieldName]['type'] = 'DataTypes.'+types[schema[fieldName]['type']] : console.log('Could not find type: ' + schema[fieldName]['type'])
    })

然后我会"DataTypes.STRING"而不是DataTypes.STRING

1 个答案:

答案 0 :(得分:0)

我从未使用您在评论Sequelize中提到的链接,但快速浏览一下他们的文档就会显示您定义新模型的方式:

const WhateverYouWant = sequelize.define('whatever', {
  Id : { type: DataTypes.INTEGER, allowNull: false, 
         defaultValue: null, primaryKey: false},

  // other columns you have...
});

查看该示例,似乎DataTypes是一个对象,而INTEGER是其库中的属性。因此,如果您引用他们的库,那么您将能够使用这些类型。