【问题标题】:Query parameters in Cosmos DB Graph-APICosmos DB Graph-API 中的查询参数
【发布时间】:2017-05-11 13:51:35
【问题描述】:

新的 Cosmos DB 图形 API 是否支持查询参数? 例如在查询中:

IDocumentQuery<dynamic> query = client.CreateGremlinQuery<dynamic>(graph, "g.V().has('name', 'john')");

我可以像在 DocumentDB 中那样用查询参数替换硬编码值 'john':

IQueryable<Book> queryable = client.CreateDocumentQuery<Book>(
                collectionSelfLink,
                new SqlQuerySpec
        {
                    QueryText = "SELECT * FROM books b WHERE (b.Author.Name = @name)", 
                    Parameters = new SqlParameterCollection() 
            { 
                          new SqlParameter("@name", "Herman Melville")
                    }
        });

我在询问时考虑到了安全性。或者在 Gremlin 中是否有其他方法可以防御注射?

【问题讨论】:

    标签: gremlin azure-cosmosdb


    【解决方案1】:

    Tinkerpop 通常具有bindings 的概念,它允许您将数据与 gremlins 脚本分开定义。可以在此处找到使用 Java 代码的示例:https://github.com/tinkerpop/gremlin/wiki/Using-Gremlin-through-Java (搜索绑定)。

    您还可以通过 Http 端点使用绑定,例如通过执行以下操作:

    curl http://localhost:8182 -d '{"gremlin": "g.V().has(key1, value1);", "bindings": {"key1": "name", "value1": "david"}}'

    您需要确定查询中的 client 是否支持绑定参数,但在我看来,您正在寻找的是与 Tinkerpop 兼容的功能。

    【讨论】:

    • 您的答案中的链接指向非常旧的文档,并引用 TinkerPop 2.x,这不是 cosmosdb 支持的版本(我相信它在 3.2.4 上)。这是 Apache TinkerPop 3.x 文档的相关链接:tinkerpop.apache.org/docs/current/reference/…
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2019-09-26
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多