这是一个简化的示例,但我正在尝试对我的模式进行更改,使其向后兼容该应用程序的旧版本。我正在添加一个externalUrls参数:
CreatePost(body: String!, userId: ID!, mentions: [String!], linkUrl: String, externalUrls: [String]): Post @isAuthenticated
@cypher(
statement: """
...
UNWIND $externalUrls as urlText
CREATE (link:Link {
id: apoc.create.uuid(),
path: urlText,
createdAt: datetime(),
updatedAt: datetime()
})
CREATE (link)-[:LINKS_TO {createdAt: datetime()}]->(post)
RETURN post
""")在此之前有一些密码,但我的想法是我只想运行这段代码:
UNWIND $externalUrls as urlText
CREATE (link:Link {
id: apoc.create.uuid(),
path: urlText,
createdAt: datetime(),
updatedAt: datetime()
})
CREATE (link)-[:LINKS_TO {createdAt: datetime()}]->(post)如果$externalUrls存在/不为null。如果较旧版本的应用程序调用
mutation CreatePost($body: String!, $userId: ID!, $mentions: [String!], $linkUrl: String) {
CreatePost(body: $body, userId: $userId, mentions: $mentions, linkUrl: $linkUrl) {
id
}
}在$externalUrls: [String]甚至不能被传入的情况下,展开行中断。我已经尝试使用CALL apoc.do.when和FOREACH来检查EXISTS($externalUrls)或NOT $externalUrls IS NULL是否都失败了,而这两个都没有作为参数传入。有没有其他方法可以检查参数是否有值或是否存在?我的感觉是,我总是会遇到Expected parameter(s): externalUrls,但我希望找到一种方法来避免这种情况。
发布于 2021-04-17 08:58:04
如果在查询中使用参数,则该参数是必需的。
模仿可选参数的最好方法是传递一个map参数,并使用map中的条目。
例如,如果您传入:
$myParams ={外部null:空,某个其他条目:1,等等:true}
然后,您可以引用:$myParams.externalUrls,或者对它使用WHERE子句或CASE,以便对它执行一些操作,以确定它是否为null。
https://stackoverflow.com/questions/67130345
复制相似问题