3.5.1错误无法通过ID刚创建的节点

时间:2019-01-24 01:37:22

标签: neo4j

编辑:在3.4上也有相同的行为

EDIT2:如果我从连接中删除disableLosslessIntegers,问题就消失了,但是所有整数返回为{low:20,high:0}类型结构,这破坏了我的整个应用程序

以下代码在节点为1.7.2 neo4j-driver的neo4j 3.3上运行良好:

import {v1 as neo4j} from 'neo4j-driver';

const url: string = process.env.COREDB_URL || '';
const user: string = process.env.COREDB_USERNAME || '';
const password: string = process.env.COREDB_PASSWORD || '';

const driver = neo4j.driver(url, neo4j.auth.basic(user, password), {disableLosslessIntegers: true});
let connection = driver.session()


async function go() {
    let res = await connection.run(`create (b:Banana {tag: 'test'}) return b,id(b) as id`, {});
    let b = res.records[0].get('b').properties
    console.log('b',b)
    let id = res.records[0].get('id')
    console.log('id',id)
    res = await connection.run(`MATCH (u) where id(u)=$id return u as id`, {id: id});
    console.log(res.records)
    let id2 = res.records[0].get('id').properties;
    console.log('id2',id2)
}

go().then(() => console.log('done')).catch((e) => console.log(e.message))

它提供以下输出:

> node tools\test-id.js
b { tag: 'test' }
id 1858404
[ Record {
    keys: [ 'id' ],
    length: 1,
    _fields: [ [Node] ],
    _fieldLookup: { id: 0 } } ]
id2 { tag: 'test' }
done

在3.5.1下,它不起作用。第二条语句不返回任何记录:

> node tools\test-id.js
b { tag: 'test' }
id 1856012
[]
Cannot read property 'get' of undefined

顺便说一句,我需要在创建之后立即执行id by get的原因是,我正在使用apoc触发器在创建后向节点添加内容,并且apoc触发器显然在对象创建并返回后运行,因此我需要第二个机会来查看转换后的节点。 但是,对于这个简化的示例,我从数据库中删除了触发器,以确保它不会引起问题

0 个答案:

没有答案