Node.js 使用neo4j cypher从中获取特定字符串

Node.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

我有这个函数从节点图像的描述中获取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.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"
}

有什么解决办法吗?

您的查询一点也不好

  • 不要在所有节点上使用扫描,请使用标签
  • 参数不能在字符串中解析
  • 插入数据时,将hashtag作为单独的节点拉出,这些节点连接到内容节点
  • 你的榜样 更好:
    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});
        });
    };