【问题标题】:Getting error while trying to use node module to add unique slug in a node for neo4j database?尝试使用节点模块在 Neo4j 数据库的节点中添加唯一 slug 时出错?
【发布时间】:2017-09-14 14:14:26
【问题描述】:

在 Node.js 环境中,我使用的是 neo4j dB。我想为 neo4j 中的每个节点使用节点模块“uslug”创建唯一的 slug。但是在我的 js 文件中尝试在密码查询中使用此函数时出现错误。 我的查询:

var uslug = require("uslug")
var slug = `MERGE(t:Test) set t.Blogtitle= uslug('Testing Slug','-')`

//仅供参考,为了可读性,我这里没有添加与neo4j驱动相关的代码...

那么,我应该如何使用 uslug 函数以便为 neo4j 中的每个节点创建唯一的 slug ?即使相同的 Blogtitle 已经存在,我如何将 slug 设置为像“Testing-Slug-1”一样递增?

【问题讨论】:

  • 你遇到了什么错误?
  • Neo4jError: 未知函数“uslug”。这是错误

标签: node.js neo4j


【解决方案1】:

你得到了错误

Neo4jError:未知函数“uslug”。这是错误

因为 Neo4j 不知道函数 uslug 并且您将其传递给 Cypher 查询。您应该在 node.js 上下文中调用 uslug,而不是在 Neo4j 数据库中。

试试看:

var uslug = require("uslug")
var slug = "MERGE(t:Test) set t.Blogtitle='" + uslug('Testing Slug') + "'"

即:调用 uslug('Testing Slug') 并将结果与​​ Cypher 查询连接起来。

另外,根据code samples,第二个参数应该是一个可选对象,而不是您使用的字符串。所以你应该把函数调用改成uslug('Testing Slug')

【讨论】:

  • 我尝试连接,但出现此错误:TypeError: (0 , _uslug.uslug) is not a function..我该怎么办?
  • @CodeReactor 根据uslug code examples 第二个参数应该是一个对象。它是可选的。但是你传递了一个字符串'-'。所以我认为您应该删除第二个参数并改用uslug('Testing Slug')
  • 我想出了那部分谢谢..如果相同的 Blogtitle 出现两次,我应该如何增加计数。例如:如果在 2 个不同的节点中添加了 BlogTitle="Testing slug"。我希望将第二个 BlogTitle 的计数增加 1,即“Testing-slug-1”...你知道吗?提前致谢!!
  • @CodeReactor 我相信这是另一个问题,所以我建议你问一个新问题而不是使用 cmets。但是避免重复的一个好方法是根据当前日期时间连接一个整数,例如testing-slug-20170914125500,指示日期和时间 2017-09-14 12:55:00。
  • @CodeReactor 另外,如果此答案解决了您的问题,请单击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 2012-06-27
  • 2015-10-24
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多