首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cypher条件集

Cypher条件集
EN

Stack Overflow用户
提问于 2020-08-02 09:27:34
回答 1查看 61关注 0票数 0

我正在尝试更新Neo4j中的一个节点,我将变量传递给查询,这个变量可能为null,如果变量为null,我不想更新节点的属性,所以我尝试这样做:

代码语言:javascript
复制
MATCH (n:address {id: $id})
  SET n = {
    name: COALESCE($name, n.name),
    streetAddress: COALESCE($streetAddress, n.streetAddress),
    build: COALESCE($build, n.build),
    door: COALESCE($door, door),
    latitude: COALESCE($latitude, n.latitude),
    longitude: COALESCE($longitude, n.longitude)
  }

RETURN (n)

但它会给出以下错误:

代码语言:javascript
复制
Neo4jError: Expected parameter(s): name, streetAddress, build, latitude, longitude

我能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-02 23:06:35

因为我将Javascript与Node.js的Neo4j驱动程序一起使用,所以我使用了字符串插值和一个函数来动态构建查询:

代码语言:javascript
复制
verifyParam(param, paramName) {
  if (param !== null && param !== undefined) return `SET n.${paramName} = ${param}`;

  return '';
}

然后在查询字符串中:

代码语言:javascript
复制
`
MATCH (n:address {id: $id})

${verifyParam($name, 'name')}
${verifyParam($streetAddress, 'streetAddress')}
${verifyParam($build, 'build')}
${verifyParam($door, 'door')}
${verifyParam($latitude, 'latitude')}
${verifyParam($longitude, 'longitude')}

RETURN (n)
`

也许不是最好的解决方案,但我没有找到一个更好的解决方案,只使用Cypher。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63211536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档