在Neo4j中创建批量节点时如何生成唯一的UUID

时间:2016-06-25 07:19:03

标签: javascript neo4j

Neo4j批量插入获得相同的UUID值/获得相同的返回值。

/**
 * @method createAlbumAndTracks
 * @param album
 * @param tracks
 * @returns {any}
 */
createAlbumAndTracks(album:any, tracks:any[]):any {
    const query = `
    UNWIND {trackList} as track
    MERGE (a:Albums ${insertQuery(album)})
    CREATE (t:Tracks)
    SET
        t = track,
        t.id = '${uuid()}', // unique UUID expected
        t.created = timestamp()
    MERGE (a)-[r:ALBUM_TRACKS]->(t)
    RETURN t`;

    return db.run(query, Object.assign(album, {trackList: tracks}));
}
  

t.id =' $ {uuid()}'虽然它应该是一个唯一的UUID,但它获得了相同的值。如何在每次创建新节点时调用该函数?

1 个答案:

答案 0 :(得分:4)

因为您只创建一次查询,但每个数组项创建一个轨道。

您应该将uuids添加到曲目列表(作为对象)

 tracklist = [{track:"Track", uuid:uuid()},....]

然后在您的查询中使用track.tracktrack.uuid