简体   繁体   English

Javascript中的Neo4j:参数未放入查询中

[英]Neo4j in Javascript: Parameters not put in to query

I'm running into trouble when using the neo4j plugin of thingdom . 使用thingdom的neo4j插件时遇到麻烦。 It seems like the plugin is not able to recognize {mlabel} and {mdata} as placeholders. 插件似乎无法将{mlabel}{mdata}识别为占位符。 Code and error follows. 代码和错误如下。

Thank you very much! 非常感谢你!

var query = [
    'CREATE (p:{mlabel} {{mdata}})',
    'RETURN p'
].join('\n');

var params = {
    mlabel : 'person',
    mdata  : {
        name: 'Pete',
        surname: 'Strutton',
        age: 35
    }
};

this.db.query(query, params, function (err, results) {
    if (err) throw err;
    return result;
});
 Error: Invalid input '{': expected whitespace or a label name (line 1, column 11) "CREATE (p:{mlabel} {{mdata}})" ^ at exports.adjustError (C:\\Spree Github Repository\\Phone\\express\\SpreeRouter \\node_modules\\neo4j\\lib\\util.js:71:15) at __$GraphDatabase_prototype_query__20 (C:\\Spree Github Repository\\Phone\\ex press\\SpreeRouter\\node_modules\\neo4j\\lib\\GraphDatabase.js:942:26) at C:\\Spree Github Repository\\Phone\\express\\SpreeRouter\\node_modules\\neo4j\\l ib\\GraphDatabase.js:2:6247 at Object.__g.trampoline.flush (C:\\Spree Github Repository\\Phone\\express\\Spr eeRouter\\node_modules\\neo4j\\lib\\Node.js:2:3552) at Request.___ [as _callback] (C:\\Spree Github Repository\\Phone\\express\\Spre eRouter\\node_modules\\neo4j\\lib\\GraphDatabase.js:2:5602) at Request.self.callback (C:\\Spree Github Repository\\Phone\\express\\SpreeRout er\\node_modules\\neo4j\\node_modules\\request\\request.js:372:22) at Request.emit (events.js:98:17) at Request.<anonymous> (C:\\Spree Github Repository\\Phone\\express\\SpreeRouter \\node_modules\\neo4j\\node_modules\\request\\request.js:1317:14) at Request.emit (events.js:117:20) at IncomingMessage.<anonymous> (C:\\Spree Github Repository\\Phone\\express\\Spr eeRouter\\node_modules\\neo4j\\node_modules\\request\\request.js:1265:12) 

Solution: 解:

You cannot parametrize your query-selectors anywhere. 您无法在任何地方参数化查询选择器。 It is only possible on data that you put into your query. 只有在您输入查询的数据上才有可能。 The above wouldn't work, but following query would: 上面的方法不起作用,但是下面的查询将起作用:

var query = [
    'CREATE (p:LABEL {mdata})',
    'RETURN p'
].join('\n').replace('LABEL', label);

var params = {
    mdata  : data
};

this.db.query(query, params, function (err, results) {
    if (err) throw err;
    console.log(results);
    return results[0];
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM