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,但它获得了相同的值。如何在每次创建新节点时调用该函数?
答案 0 :(得分:4)
因为您只创建一次查询,但每个数组项创建一个轨道。
您应该将uuids添加到曲目列表(作为对象)
tracklist = [{track:"Track", uuid:uuid()},....]
然后在您的查询中使用track.track
和track.uuid
。