小编Fra*_*ela的帖子

记录GraphQL API

使用REST,我们可以使用Swagger,RAML或其他技术来记录我们的API并生成HTML文档,我们的消费者可以在不需要与服务器交互的情况下阅读这些文档.

为GraphQL做一些类似的事情吗?有没有办法生成资源和属性的文档?

graphql graphql-js

49
推荐指数
5
解决办法
2万
查看次数

Node.js Q承诺然后()链接不等待

我试图重构以下代码,以避免回调地狱,将其转换为:

createUser(user_data)
  .then(createClient(client_data))
  .then(createClientPartner(clientpartner_data))
  .then(function(data) {
    cb(null, _.pick(data,['id','username']));
  }, function(error) {
    cb(error);
  });
Run Code Online (Sandbox Code Playgroud)

如您所见,我为每个步骤创建了一个方法:

function createUser(user_data) {
  console.log('createUser');
  var deferred = Q.defer()

  new db.models.User.create(user_data, function(err, user) {
    console.log('createUser done');
    if (!!err)
      deferred.reject(err);
    else {
      client_data['id'] = user.id;
      deferred.resolve(user);
    }
  });

  return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)

其他方法具有相同的console.log调用,以便能够遵循执行路径.

我希望它是:

  • 创建用户
  • createUser完成了
  • createClient
  • createClient完成了
  • createClientPartner
  • createClientPartner完成了

但相反,它是:

  • 创建用户
  • createClient
  • createClientPartner
  • createClientPartner完成了
  • createUser完成了
  • createClient完成了

为什么在前一个承诺尚未解决时触发了功能?我希望"然后"等到先前的承诺得到解决或拒绝继续.我错过了一些重要的承诺吗?

javascript node.js promise q

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

标签 统计

graphql ×1

graphql-js ×1

javascript ×1

node.js ×1

promise ×1

q ×1