const gremlin = require('gremlin');
let graphHost = 'x.x.x.x';
let graphPort = 'xxxx';
let graph = new gremlin.driver.Client(`ws://${graphHost}:${graphPort}/gremlin`, { traversalSource: 'g' });
//Gremlin.createClient(graphPort, graphHost)
// console.log('appObj inside executeGraph', args['appObj'] )
console.log(`graphHost: ${graphHost} graphPort: ${graphPort}`);
function map_to_object(res) {
const out = Object.create(null)
console.log('out,res',out,Object.keys(res),res,Array.isArray(res),res.length)
Object.keys(res).forEach((value, key) => {
if (value instanceof Map) {
console.log('value,key',value,key)
out[key] = map_to_object(value)
console.log('out[key]',out[key])
}
else {
out[key] = value
console.log('out[key] in else and out is',out[key],out)
}
})
return out
}
let query= `g.V().hasLabel('Persona').has('personaId', 'ZvBX2Mbvd2PM9T6gWRqPQd8qZm83') .outE('lovedOne').has('relation')
.as('e').inV().not(has('isDeleted', true)).select('e') .order().by(inV().values('dateOfBirth'),incr)
.project('relation','lovedOne') .by(select('e').valueMap('relation', 'relationGroup', 'classification', 'on'))
.by(select('e').inV().valueMap('personaId', 'callingName', 'dateOfBirth', 'isTempDob', 'gender', 'imageUrl', 'isDeleted'))
.group().by(select('e').values('relationGroup'))`;
graph.submit(query, {}).then(results =>{
console.log('results in graph', results)
for (let data of results){
var mapObj = data
console.log('mapObj', mapObj);
map_to_object(results);
}
})
У меня есть массив типа
res: [
Map {
'Close Friends' => [ [Map] ],
'Extended Family' => [ [Map] ],
'Friends' => [ [Map] ],
'Immediate Family' => [ [Map], [Map] ]
}
]
Когда я пытаюсь распечатать res [0] в серверной службе, он печатается как не определено. Итак, я попытался распечатать длину массива и подтвердил, является ли он массивом или нет.
console.log('array first element ',res[0])
console.log('is it an array? and length',Array.isArray(res),res.length)
==> array first element undefined
==> is it an array? and length false 1
Я хочу, чтобы эта структура карты была напечатана, а затем я хочу преобразовать ее в обычный объект.
Для приведенного ниже фрагмента кода результат, который я получаю в моем терминале vscode, равен
results in graph [
Map {
'Close Friends' => [ [Map] ],
'Extended Family' => [ [Map] ],
'Friends' => [ [Map] ],
'Immediate Family' => [ [Map], [Map] ]
}
]
mapObj Map {
'Close Friends' => [ Map { 'relation' => [Map], 'lovedOne' => [Map] } ],
'Extended Family' => [ Map { 'relation' => [Map], 'lovedOne' => [Map] } ],
'Friends' => [ Map { 'relation' => [Map], 'lovedOne' => [Map] } ],
'Immediate Family' => [
Map { 'relation' => [Map], 'lovedOne' => [Map] },
Map { 'relation' => [Map], 'lovedOne' => [Map] }
]
}
out,res [Object: null prototype] {} [ '_items', 'attributes', 'length' ] [
Map {
'Close Friends' => [ [Map] ],
'Extended Family' => [ [Map] ],
'Friends' => [ [Map] ],
'Immediate Family' => [ [Map], [Map] ]
}
] false 1
out[key] in else and out is _items [Object: null prototype] { '0': '_items' }
out[key] in else and out is attributes [Object: null prototype] { '0': '_items', '1': 'attributes' }
out[key] in else and out is length [Object: null prototype] {
'0': '_items',
'1': 'attributes',
'2': 'length'
}