gpt4 book ai didi

javascript - 如何在 node/iojs 中使用 ES6 计算属性名称?

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:46 25 4
gpt4 key购买 nike

我正在尝试编写一个接受 CSV 并根据标题行动态生成定义的工具?

例如,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 header 动态生成排?


编辑

好的,经过一些研究,我认为最明显的问题是“如何在对象字面量中使用变量名作为动态键名”,并且已经回答了好几次。

因此,用括号表示法很简单:

var definitionObj = {}
definitionObj['title'] = sequelize.STRING;
definitionObj['description'] = sequelize.TEXT;

var Entry = sequelize.define('Entry', definitionObj);

但是,那么我现在的问题是我如何使用 ES6 Computed Property Names在 Node ?我正在使用我认为支持 ES6 的 Node 0.12.2,即使使用 --harmony 标志,这个简单的代码也会失败:

var Entry = sequelize.define('Entry', {
['title']: Sequelize.STRING,
['description']: Sequelize.TEXT
});

SyntaxError: 意外的标记 [

io.js 真的是唯一的选择吗? ?

编辑 2

实际上,即使使用 iojs,此语法仍然失败,所以我一定是做错了什么?

最佳答案

在当前的 Node 版本 > 4.x 中,您对 ES6 有一些支持。状态可以在文档中找到: https://nodejs.org/en/docs/es6/

你要找的叫什么

Computed (dynamic) property names

现在完全支持它。详情可在此处找到:https://github.com/lukehoban/es6features#enhanced-object-literals

用法:

var obj = {
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42
};

将产生对象:{prop_42: 42}

关于javascript - 如何在 node/iojs 中使用 ES6 计算属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31498206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com