我使用node-neo4j连接到neo4j图数据库。 我注意到每当我尝试获取所有节点(例如用户)时,json结果返回的信息太多,我不需要。
以下是返回所有用户节点的代码:
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);
});
};
它给了我这些json respsonse;
[
{
"_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服务器中不需要的部分?
谢谢!
答案 0 :(得分:2)
我设法通过更改返回的响应来返回数据字段,如下所示
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);
});
};
我更改了返回新用户(结果['用户'] ['数据']),并成功返回"数据&# 34;回应的一部分。
答案 1 :(得分:1)
您可以更新查询以返回字段而不是节点...
...
RETURN user.uid, user.name
这会使你的结果集更多地成为字段的数据“网格” - 但听起来就像你正在寻找的那样
答案 2 :(得分:0)
上周我自己也在苦苦挣扎。简而言之,您可以将变量设置为JSON的特定部分,如下所示:
var anything =JSON.stringify(results[0]._node._data.data);
该行为我返回{\"uid\":\"53c7a820-f0b4-11e3-af63-28373723792e\",\"name\":\"user1\"}
。
在这里查看我的示例,Trying to interpret the Node-Neo4j API。只是顺便说一句,我不得不向JSON添加一个结束]
以使其工作。