我想寫一個工具,需要一個CSV並動態生成一個基於標題行的定義?如何在節點/ iojs中使用ES6計算的屬性名稱?
例如,以CSV:
Title(STRING), Description(TEXT)
Title Example, Description Example
...
的Sequelize docs指定,例如:
var Entry = sequelize.define('Entry', {
title: Sequelize.STRING,
description: Sequelize.TEXT
})
我怎麼能寫這個定義,以便它可以動態定義 - 這樣title
數據類型Sequelize.STRING
可以根據CSV標題行動態生成?
編輯
好了,經過一番研究,我認爲,一個顯而易見的問題是「如何使用變量名稱爲動態密鑰名在對象文本」,並已經回答了好幾次。
結果,它是簡單的在括號符號這麼寫:
var definitionObj = {}
definitionObj['title'] = sequelize.STRING;
definitionObj['description'] = sequelize.TEXT;
var Entry = sequelize.define('Entry', definitionObj);
但是,那麼我現在的問題是我如何在節點使用ES6 Computed Property Names?我使用節點0.12.2,我認爲有ES6的支持,甚至與--harmony
標誌,這個簡單的代碼失敗:
var Entry = sequelize.define('Entry', {
['title']: Sequelize.STRING,
['description']: Sequelize.TEXT
});
與SyntaxError: Unexpected token [
是唯一的選擇真的去用io.js ?
EDIT 2
其實這句法依然甚至iojs失敗,所以我一定是做錯了什麼?
這裏是你想使用該功能的支持:https://開頭kangax.github.io/compat-table/es6/#object_literal_extensions_computed_properties。目前節點和io都不支持它。 –
另外,你似乎並不需要任何計算出來的屬性名稱,因爲所有的對象定義都是等價的(並且使用靜態的'title'和'description'名稱)?! – Bergi
@NoahFreitas啊我明白了,所以我並沒有完全瘋狂。你碰巧知道列表中提到的是什麼? – waffl