问题描述
我正在尝试编写一个采用CSV的工具,并根据标题行动态生成定义?
例如,CSV包含:
Title(STRING), Description(TEXT)
Title Example, Description Example
...
Sequelize 指定,例如:
var Entry = sequelize.define('Entry', {
title: Sequelize.STRING,
description: Sequelize.TEXT
})
如何编写此定义以便可以动态定义 - 以便可以根据CSV标题行动态生成title
和数据类型Sequelize.STRING
?
编辑
好吧,经过一些研究,我认为显而易见的问题是“如何在对象文字中使用变量名作为动态键名”,并且已经多次回答。
因此,以括号表示法编写它很简单,因此:
var definitionObj = {}
definitionObj['title'] = sequelize.STRING;
definitionObj['description'] = sequelize.TEXT;
var Entry = sequelize.define('Entry', definitionObj);
但是,我现在的问题是如何在节点中使用ES6 ?
我正在使用我认为支持ES6的节点0.12.2,即使使用--harmony
标志,这个简单的代码也会失败:
var Entry = sequelize.define('Entry', {
['title']: Sequelize.STRING,
['description']: Sequelize.TEXT
});
with SyntaxError: Unexpected token [
使用是唯一的选择吗?
编辑2
实际上,即使使用iojs,这种语法仍然失败,所以我一定做错了什么?
1楼
在当前的Node版本> 4.x中,您可以获得对ES6的一些支持。 状态可以在文档中找到: :
您正在寻找的是什么
计算(动态)属性名称
它现在完全支持。 详细信息可以在这里找到: :
用法:
var obj = {
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42
};
会产生对象:{prop_42:42}
2楼
显示Node和io.js当前都不支持计算属性。 数据位于 > 。
3楼
现在可以在iojs v3.0中使用它
变更日志