2015-07-19 51 views
1

我想寫一個工具,需要一個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失敗,所以我一定是做錯了什麼?

+1

這裏是你想使用該功能的支持:https://開頭kangax.github.io/compat-table/es6/#object_literal_extensions_computed_properties。目前節點和io都不支持它。 –

+0

另外,你似乎並不需要任何計算出來的屬性名稱,因爲所有的對象定義都是等價的(並且使用靜態的'title'和'description'名稱)?! – Bergi

+0

@NoahFreitas啊我明白了,所以我並沒有完全瘋狂。你碰巧知道列表中提到的是什麼? – waffl

回答

相關問題