小编Eri*_*son的帖子

RAML中示例json的动态填充

我很喜欢在声明resourceType时RAML如何动态引用不同的模式:

resourceTypes:
  - collection:
      get:
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
      post:
        body:
          application/json:
            schema: <<schema>>Create
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
Run Code Online (Sandbox Code Playgroud)

在这里,我可以使用这个

/users:
  type: { collection: { schema: user } }
Run Code Online (Sandbox Code Playgroud)

和RAML将给我userGET和POST的架构响应,并使用userCreate架构发送POST请求.凉!现在我可以使用大量不同的模式重用我的集合定义.

但是现在我想要为所有内容提供示例json,我希望以<<schema>>另一种方式利用var来利用"代码重用".我希望能够做到

resourceTypes:
  - collection:
      get:
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
                example: examples/v1-<<schema>>.json
      post:
        body:
          application/json:
            schema: <<schema>>Create
            example: examples/v1-<<schema>>-create.json
        responses:
          200:
            body:
              application/json:
                schema: <<schema>>
                example: examples/v1-<<schema>>.json
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这不起作用.我收到一个错误说

error: File with path "/examples/v1-%3C%3Cschema%3E%3E.json" does not exist
Run Code Online (Sandbox Code Playgroud)

所以现在我已经使用手动将它添加到我的所有集合中,/users上面的例子已成为

/users: …
Run Code Online (Sandbox Code Playgroud)

raml

8
推荐指数
1
解决办法
2976
查看次数

Node.js EventEmitter事件不共享事件循环

也许潜在的问题是我使用的node-kafka模块是如何实现的,但也许不是,所以我们在这里......

使用node-kafa库,我遇到订阅consumer.on('message')事件的问题.该库正在使用标准events模块,所以我认为这个问题可能足够通用.

我的实际代码结构庞大而复杂,所以这里有一个基本布局的伪示例来突出我的问题.(注意:此代码段未经测试,因此我可能在此处有错误,但无论如何语法都没有问题)

var messageCount = 0;
var queryCount = 0;

// Getting messages via some event Emitter
consumer.on('message', function(message) {
    message++;
    console.log('Message #' + message);

    // Making a database call for each message
    mysql.query('SELECT "test" AS testQuery', function(err, rows, fields) {
        queryCount++;
        console.log('Query   #' + queryCount);
    });
})
Run Code Online (Sandbox Code Playgroud)

我在这里看到的是,当我启动我的服务器时,卡夫卡希望给我的100,000条左右的积压消息,它通过事件发射器完成.所以我开始收到消息.获取并记录所有消息大约需要15秒.

假设mysql查询速度相当快,这就是我期望看到的输出:

Message #1
Message #2
Message #3
...
Message #500
Query   #1
Message #501
Message #502
Query   #2
... and so on in some …
Run Code Online (Sandbox Code Playgroud)

javascript node.js eventemitter

6
推荐指数
1
解决办法
431
查看次数

Neo4j通过属性过滤器指导路径与多个关系

作为Cypher和Neo4j的新手,我无法构建我的用例查询.我正在构建一个简单的ACL(访问控制列表),并且正在寻找通过权限关系的路径.一张图片可以更好地解释它:

在此输入图像描述

Key:
    Users -> Blue
    Groups -> Yellow, Green
    Resource Tree -> Red
Run Code Online (Sandbox Code Playgroud)

现在我想看看Bob是否存在路径到Bob拥有更新访问权限的eVar 33资源.因为有直接的路径,我可以通过跑步得到我想要的东西

MATCH p =(usr:Usr)-[:AXO {update: true}]->(aco:ACO)
WHERE usr.name = 'Bob' AND aco.name = 'eVar 33'
RETURN p
Run Code Online (Sandbox Code Playgroud)

但现在,Bob也是Media Mgmt小组的成员,该小组授予他对转换资源的读取权限.并且因为转换比eVar 33更靠资源树,eVar 33应该继承此权限.但是当我运行相同的查询时,没有找到路径.我知道这是因为我不允许遍历和关系,但我怎么能这样做?{read: true}:IN:HAS

我试过了:

MATCH p =(usr:Usr)-[:IN|:HAS|:AXO {read: true}]->(aco:ACO)
WHERE usr.name = 'Bob' AND aco.name = 'eVar 33'
RETURN p
Run Code Online (Sandbox Code Playgroud)

认为这会允许遍历这些关系,但它仍然找不到路径(因为我不允许超过1的深度?).

所以这是我的需求:

  • 未知的路径深度
  • 我回来的任何路径都很好(我真正关心的是"是否有路径?")
  • 必须能够从用户获取资源并且当遵循AXO关系时,它必须与属性过滤器匹配.
  • 必须遵循有向图(ig Bob没有Google …

acl neo4j cypher

5
推荐指数
1
解决办法
2679
查看次数

Neo4j使用当前属性值的正则表达式重命名属性

从我的研究(很多谷歌搜索),我看不出这是可能的,但我认为仍然值得问.我有很多节点,如:

(org:Organization {name: "Organization 1234"})
Run Code Online (Sandbox Code Playgroud)

其中1234可以是任何非负整数.

为了更新数据库以使用新的API,我想重命名集合中的每一个,以便结果看起来像:

(org:Organization {name: "Org_1234"})
Run Code Online (Sandbox Code Playgroud)

所以,我需要在当前属性上使用[0-9] +正则表达式匹配来混搭Org_.

真的,我甚至不知道从哪里开始.我在文档中看到的只是正则表达式可以用作WHERE子句(WHERE n.property =~ {regex})中的谓词.有没有一种方法只使用Cypher,因为我没有使用Java库?

neo4j cypher

1
推荐指数
1
解决办法
616
查看次数

标签 统计

cypher ×2

neo4j ×2

acl ×1

eventemitter ×1

javascript ×1

node.js ×1

raml ×1