Node.js 使用neo4j cypher从中获取特定字符串
我有这个函数从节点图像的描述中获取hastagNode.js 使用neo4j cypher从中获取特定字符串,node.js,api,rest,neo4j,cypher,Node.js,Api,Rest,Neo4j,Cypher,我有这个函数从节点图像的描述中获取hastag 当我手动输入关键字时,它是有效的 exports.hashtag = function (req, res) { var query = [ 'start n = node(*) where n.description =~ \'(?i).*({hashtagss}).*\' return n ' ].join('\n') var params = { hashtagss: req.params
当我手动输入关键字时,它是有效的
exports.hashtag = function (req, res) {
var query = [
'start n = node(*) where n.description =~ \'(?i).*({hashtagss}).*\' return n '
].join('\n')
var params = {
hashtagss: req.params.hashtagss
};
Image.query(query, params, function (err, images) {
if (err) return res.status(500).json(err);
else return res.status(200).json({hashtags:images});
});
})
但是当我发送一个参数时,我得到了这个错误消息
{
"message": "The statement has been closed.",
"name": "Neoprene"
}
有什么解决办法吗?您的查询一点也不好
MATCH(n:Content)我找到了这个解决方案
这是我的工作
这正是我需要的
exports.hashtag = function (req, res) {
var hashtag = req.params.hashtag;
var query = [
'MATCH (imageTag:Image) WHERE imageTag.description =~ \'(?i).*'+hashtag+'.*\' return imageTag'
].join('\n')
Image.query(query, function (err, images) {
if (err) return res.status(500).json(err);
else return res.status(200).json({hashtags:images});
});
};
这是我选择的一个参数名-\这个查询不好,它不会被缓存。您最好使用下面的Michael Hungers解决方案,或者至少将其参数化:MATCH(imageTag:Image),其中imageTag.description=~{hashtagss}我的目标是在整个字符串中包含一个单词,我使用了这个cypher,这很好,但部分字符串参数不会被解析。相反,param hashtagss现在的值为“(?i)。*(“+hashtagss+”).*”,因此您仍在进行regexp匹配,但使用了正确的参数化查询。我的目标是在整个字符串中包含一个单词,我使用了这个密码
MATCH (n:Content)<-[:TAGGED]-(t:Tag)
WHERE t.name IN {hashtags}
return n, collect(t.name) as tags
exports.hashtag = function (req, res) {
var hashtag = req.params.hashtag;
var query = [
'MATCH (imageTag:Image) WHERE imageTag.description =~ \'(?i).*'+hashtag+'.*\' return imageTag'
].join('\n')
Image.query(query, function (err, images) {
if (err) return res.status(500).json(err);
else return res.status(200).json({hashtags:images});
});
};