【发布时间】:2015-10-08 11:54:18
【问题描述】:
我正在尝试编写一个接受 CSV 并根据标题行动态生成定义的工具?
例如,CSV 包含:
Title(STRING), Description(TEXT)
Title Example, Description Example
...
Sequelize docs 指定,例如:
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 Computed Property Names?我正在使用我认为支持 ES6 的节点 0.12.2,即使使用 --harmony 标志,这个简单的代码也会失败:
var Entry = sequelize.define('Entry', {
['title']: Sequelize.STRING,
['description']: Sequelize.TEXT
});
SyntaxError: Unexpected token [
io.js 真的是唯一的选择吗?
编辑 2
实际上,即使使用 iojs,这个语法仍然失败,所以我一定是做错了什么?
【问题讨论】:
-
以下是对您尝试使用的功能的支持:kangax.github.io/compat-table/es6/…。 node 和 io 目前都不支持它。
-
另外,您似乎不需要任何计算属性名称,因为您的所有对象定义都是等效的(并使用静态
title和description名称)?! -
@NoahFreitas 啊我明白了,所以我还没有完全疯了。你碰巧知道列表中提到的是什么吗?
-
@bergi 抱歉,这只是示例,在实际使用中我想使用开头提到的动态名称(从 CSV 中提取标题名称)。
-
我强烈建议您查看babel
标签: javascript node.js csv ecmascript-6 sequelize.js