Javascript 如何从以 EnumValue 作为键的 Map 检索值

Pis*_*hio 6 javascript dictionary gremlin janusgraph

我正在用 Javascript 查询数据库,并返回一个 Map 对象。问题在于映射中某些条目的键是一个对象,准确地说是一个 EnumValue。

我似乎找不到直接检索此类条目的方法。我唯一想到的是迭代地图的每个键并检查它是否是一个对象。

因此,如果我 console.log 从查询中获得的输出,它看起来像这样:

Map {
    EnumValue { typeName: 'T', elementName: 'label' } => 'user',
    'gender' => [ 'f' ],
    'identityid' => [ '2349fd9f' ],
    'name' => [ 'Erika' ],
    'email' => [ 'test1@test.com' ],
    EnumValue { typeName: 'T', elementName: 'id' } => 4136,
    'lastname' => [ 'Delgato' ] 
}
Run Code Online (Sandbox Code Playgroud)

我已经天真地尝试使用这样的方法来获取条目:

Map {
    EnumValue { typeName: 'T', elementName: 'label' } => 'user',
    'gender' => [ 'f' ],
    'identityid' => [ '2349fd9f' ],
    'name' => [ 'Erika' ],
    'email' => [ 'test1@test.com' ],
    EnumValue { typeName: 'T', elementName: 'id' } => 4136,
    'lastname' => [ 'Delgato' ] 
}
Run Code Online (Sandbox Code Playgroud)

但当然它返回未定义。

有任何想法吗?

Pis*_*hio 4

因此,为了节省其他遇到此问题的人的时间,我将在这里编写解决方案。

此问题特定于使用 gremlin javascript 客户端(此处使用的版本 3.4.2)在 Janusgraph 数据库中检索值。

将 valueMap(true) 附加到遍历时,结果就是我发布的问题中的结果。通过 gremlin 库,我发现在 gremlin.process.t 的对象 t 中可以找到这个 EnumValues:

id
key
label
value
Run Code Online (Sandbox Code Playgroud)

然后使用 id 或 label 就可以直接检索那些令人讨厌的键的值。

一个例子:

id
key
label
value
Run Code Online (Sandbox Code Playgroud)