dinoql 是一个可定制化的 GraphQL 风格的查询语言,用于实现与 JavaScript 对象进行交互。使用 dinoQL 可以像用 GraphQL 遍历 API 一样遍历 JavaScript 对象。
使用和 GraphQL 同样的做法的目的是因为:
以下例子都使用如下数据:
const data = { requests: { products: [], users: [{ name: 'Victor Igor', id: "100", age: 40 }, { name: 'Kant Jonas', id: "200", age: 35 }], friends: [{ name: 'Kátia', id: "300", age: 10 }] } }
import dinoql from 'dinoql' const users = dinoql(data)` requests { users { name } } ` console.log(users) //{ users: [{ name: 'Victor Igor' }, { name: 'Kant Jonas' }] }
import dinoql from 'dinoql' const users = dinoql(data)` requests { users(id: "200") { name } } ` console.log(users) //{ users: [{ name: 'Kant Jonas' }] }
import dinoql from 'dinoql' const users = dinoql(data)` requests { changeUsers: users(id: "200") { name } } ` console.log(users) //{ changeUsers: [{ name: 'Kant Jonas' }] }
Resolvers provide the instructions for turning a dinoQL operation into data.
import dinoql from 'dinoql' const users = dinoql(data)` requests { users(orderBy: age) { name, age } } ` console.log(users) //{ users: [{ name: 'Kant Jonas', age: 35 }, { name: 'Victor Igor', age: 40 }] }
import dinoql from 'dinoql' const users = dinoql(data)` requests { notfound(defaultValue: "Hello") } ` console.log(users) // {notfound: "Hello"}
import dinoql from 'dinoql' const users = dinoql(data)` requests { users { id(toNumber: 1) } } ` console.log(users) //{ users: [{ id: 100 }, { id: 200 }] }
import dinoql from 'dinoql' const users = dinoql(data)` requests { users(first: true) { name } } ` console.log(users) //{ users: { name: 'Victor Igor' } }
import dinoql from 'dinoql' const users = dinoql(data)` requests { users(last: true) { name } } ` console.log(users) //{ users: { name: 'Kant Jonas' } }
You can create a function to change a value in query.
import dql, { addResolvers } from 'dinoql'; const incAge = (list, right) => { const valueToInc = Number(right); return list.map(item => ({ ...item, age: item.age + valueToInc })); }; addResolvers(({ incAge })); const value = dql(data)` requests { users(incAge: 2) { name, age } } `; // { users: [{ name: 'Victor Igor', age: 42 }, { name: 'Kant Jonas', age: 37 }] }
import dinoql from 'dinoql' const users = dinoql(data, { keep: true })` requests { users(id: "200") { name } } ` console.log(users) /* { requests: { users: [{ name: 'Kant Jonas' }] } } */
You can improve performance parsing in build time your queries.
Create files .graphql
or .gql
and add your queries.
Import your queries from .graphql|.gql
# your queries query MyQuery { requests { users } }
//your js import dinoql from 'dinoql' import { MyQuery } from './MyQueries'; const users = dinoql(data)(MyQuery)
You can share piece of query logic.
fragment queryOne on Query { users { name } } fragment queryTwo on Query { products } query Form { requests { ...queryOne, ...queryTwo, friends } }
你可能已经想知道如何将你放在*.vue文件中的代码检查风格了,尽管它们不是JavaScript。我们将假设你正在使用ESLint(如果你还没用,那你应该用了!)。 你还需要[eslint-plugin-html](https://github.com/BenoitZugmeyer/eslint-plugin-html),它支持在 *.vue 文件中提取和删除JavaScript。 确保在ESLin
假设我需要解析一个JSON(见下文)。 首先,我解析“status”字段,以获得的实例(见下文) 我可以用解析JSON以获得而不首先获得吗?
我有一个使用Hibernate 4.x的应用程序,它当前正在使用本机Hibernate API(这意味着我有一个和)。我刚刚注意到,现有的标准API被弃用了,而支持JPA的(高级)标准API: Hibernate提供了一个旧的、遗留的API,应该将其视为不推荐使用的API。任何特性开发都不会针对这些API。最终,特定于Hibernate的条件特性将作为JPA的扩展进行移植。 我不想将我的应用程序转
问题内容: 我有一个很大的Excel工作表,看起来与此类似: 我要做的是创建一个新的动态生成的表格,其中显示了所有人员。 在SQL中,这将是同步:。我以前从未在excel中使用过VBA(我是一位经验丰富的PHP / Javascript程序员,并且已在MS Access中使用过VBA),所以我正在寻找初学者的指导以帮助我入门。也许有人可以推荐一个简单的教程或博客文章,其功能类似于我需要做的事情?
Computer language design is just like a stroll in the park. Jurassic Park, that is. — Larry Wall 在本章中,我们将学习如下内容: 使用 Puppet 社区规范 使用模块 使用标准的命名规范 使用嵌入式 Ruby 代码 使用纯 Ruby 代码书写配置清单 遍历多个项目 书写强大的条件语句 在 if 语句中
Hyperledger Composer中的查询以定制的查询语言编写。查询在业务网络定义中的一个叫(queries.qry)的查询文件中定义。 查询语法 所有查询都必须包含description和statement属性。 描述 该description属性是描述查询功能的字符串。它必须包含但可以包含任何东西。 声明 该statement属性包含查询的定义规则,可以具有以下运算符: SELECT 是
我认为我的问题是一个常见的问题,我正在权衡作为解决方案的GraphQL的成本和收益。 我在一个产品上工作,该产品的数据由基于CRUD的RESTAPI存储。我们的应用程序组件公开了一个数据搜索接口,当然需要某种服务器端支持来请求该数据。这可以包括排序、筛选、选择字段等。当然,在Hibernate上下文中提供这些功能的更传统方式,比如endpoint的查询参数附加项,但是在这一上下文中尝试CopyQL
camelCase 很糟 你曾维护过别人的代码吗?你维护过像这样的代码吗? my $variableThatContainsData = someSubroutineThatMucksWithData( $someAwfulVariable ); 混合大小写单词在 Perl 世界被称为 camelCase,通常它的令人不悦之处是使 阅读代码更难。 甚至具有糟糕名称的代码使用下划线也能变得