Я вижу .project().by()
обходы, возвращающиеся {}
под Gremlin JS 3.4.0
. Когда я понижаю до 3.2.10
, они работают правильно.
gremlin> g.addV("trip").property(single, "trackName", "Ohio")
==>v[1]
In Gremlin JS `3.4.0`:
const result = await g.V("1").project("trackName").by("trackName").next();
результат:
{
"value": {},
"done": false
}
но когда я понижаюсь до Gremlin 3.2.10
, результат верен:
{
"value": {
"trackName": "Ohio"
},
"done": false
}
Нужно ли мне изменить способ использования project
в 3.4.0
?
РЕДАКТИРОВАТЬ: Результаты тестирования на разных версиях. Я запускал каждый тест для версии gremlin, собирал результаты, затем увеличивал версию и снова запускал тесты. Я использую только один экземпляр Neptune, поэтому мы можем быть уверены, что это одни и те же данные.
Неудачный тест означает, что он вернул данные в виде:
"results": {
"value": {},
"done": false
}
Для тестирования консоли я снял финальную .next()
.
Среда, в которой я тестирую:
AWS Lambda Node 8.10
AWS Neptune 1.0.1.0
РЕДАКТИРОВАТЬ 2: Добавление файлов JS, используемых во время теста Нептуна.
index.js
const gremlin = require("gremlin");
const { DriverRemoteConnection } = gremlin.driver;
const { Graph } = gremlin.structure;
const initGremlinClient = () => {
try {
const dc = new DriverRemoteConnection(
`ws://my-cluster.XXXXXXX.us-east-1.neptune.amazonaws.com:8182/gremlin`,
{}
);
const graph = new Graph();
return {
g: graph.traversal().withRemote(dc),
closeGremlinConnection: () => dc.close()
};
} catch (error) {
console.log("[GREMLIN INIT ERROR]", error);
throw new Error(error);
}
};
exports.handler = async event => {
const { g, closeGremlinConnection } = initGremlinClient();
const result = await g
.addV("test")
.property("myProp", "myValue")
.project("myProp")
.by("myProp")
.next();
closeGremlinConnection();
return result;
};
package.json
{
"name": "gremlinTest",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"gremlin": "3.4.0"
}
}