Node.js 如何获取node-neo4j返回节点(仅包含数据)
我正在使用node-neo4j连接到neo4j图形数据库。 我注意到,每当我尝试获取所有节点(例如用户)时,json结果返回中包含了太多我不需要的信息 以下是返回所有用户节点的代码:Node.js 如何获取node-neo4j返回节点(仅包含数据),node.js,neo4j,node-neo4j,Node.js,Neo4j,Node Neo4j,我正在使用node-neo4j连接到neo4j图形数据库。 我注意到,每当我尝试获取所有节点(例如用户)时,json结果返回中包含了太多我不需要的信息 以下是返回所有用户节点的代码: User.getAll = function (callback) { var query = [ 'MATCH (user:User)', 'RETURN user', ].join('\n'); db.query(query, null, function
User.getAll = function (callback) {
var query = [
'MATCH (user:User)',
'RETURN user',
].join('\n');
db.query(query, null, function (err, results) {
if (err) return callback(err);
var users = results.map(function (result) {
return new User(result['user']);
});
callback(null, users);
});
};
它给了我这些反应
[
{
"_node": {
"_nodeNeo4j": {
"version": "1.1.0",
"constructor": "Node"
},
"_data": {
"extensions": {},
"outgoing_relationships": "http://localhost:7474/db/data/node/13/relationships/out",
"labels": "http://localhost:7474/db/data/node/13/labels",
"all_typed_relationships": "http://localhost:7474/db/data/node/13/relationships/all/{-list|&|types}",
"traverse": "http://localhost:7474/db/data/node/13/traverse/{returnType}",
"self": "http://localhost:7474/db/data/node/13",
"property": "http://localhost:7474/db/data/node/13/properties/{key}",
"properties": "http://localhost:7474/db/data/node/13/properties",
"outgoing_typed_relationships": "http://localhost:7474/db/data/node/13/relationships/out/{-list|&|types}",
"incoming_relationships": "http://localhost:7474/db/data/node/13/relationships/in",
"create_relationship": "http://localhost:7474/db/data/node/13/relationships",
"paged_traverse": "http://localhost:7474/db/data/node/13/paged/traverse/{returnType}{?pageSize,leaseTime}",
"all_relationships": "http://localhost:7474/db/data/node/13/relationships/all",
"incoming_typed_relationships": "http://localhost:7474/db/data/node/13/relationships/in/{-list|&|types}",
"data": {
"uid": "53c7a820-f0b4-11e3-af63-28373723792e",
"name": "user1"
}
}
}
},
无论如何,是否只需要从密码器返回结果的“数据”部分?或者,在将结果返回给客户端之前,我应该去除node.js服务器中不需要的部分吗
谢谢 您可以更新查询以返回字段而不是节点
...
RETURN user.uid, user.name
这将使您的结果集更像是字段的数据“网格”——但听起来这正是您要查找的内容通过更改返回的响应,我只返回了数据字段,如下所示
User.getAll = function (callback) {
var query = [
'MATCH (user:User)',
'RETURN user',
].join('\n');
db.query(query, null, function (err, results) {
if (err) return callback(err);
var users = results.map(function (result) {
return new User(result['user']['data']);
});
callback(null, users);
});
};
我更改了返回新用户的(结果['User']['data']),它成功地返回了响应的“数据”部分。我自己上周也在努力解决这个问题。长话短说,您可以将变量设置为JSON的特定部分,如下所示:
var anything=JSON.stringify(结果[0]。\u节点.\u数据.data)代码>那一行为我返回了{\'uid\\:\'53c7a820-f0b4-11e3-af63-283737723792E\,'name\':'user1\'}
。
在这里查看我的示例。顺便说一句,我必须在JSON中添加一个结束符]
,以使其正常工作。这是可行的,但如果我想返回该节点上的所有属性/字段,该怎么办?例如,我有10个字段,我想返回所有字段。感谢当前似乎没有返回节点属性名称列表(或包含值的映射)的功能。有趣的是,如果您使用直接Rest API:您将获得该特定节点的属性列表。有更好的方法吗?更好的方法是使用新的事务性cypher端点,它只返回节点的属性:docs.neo4j.org/chunked/milestone/Rest-API-transactional.html