小编Mar*_*rio的帖子

当没有数据返回时,GraphQL 突变返回类型应该是什么?

我有一个 Apollo GraphQL 服务器,我有一个删除记录的突变。此更改接收资源的 UUID,调用 REST(Ruby on Rails)API,当删除成功时,该 API 仅返回成功的 HTTP 代码和空正文(204 无内容)以及带有错误的 HTTP 错误代码删除不起作用时的消息(404 或 500,典型的 REST 删除端点)。

在定义 GraphQL 突变时,我必须定义突变返回类型。突变返回类型应该是什么?

input QueueInput {
  "The queue uuid"
  uuid: String!
}


deleteQueue(input: QueueInput!): ????????
Run Code Online (Sandbox Code Playgroud)

我可以使它与几种不同类型的返回(布尔值、字符串等)一起工作,但我想知道什么是最佳实践,因为我尝试过的返回类型都没有感觉是正确的。我认为重要的是,在调用突变后,在客户端我有一些关于如果事情进展顺利(API 返回 204 不是内容)或如果发生一些错误(API 返回 404 或 500)发生了什么的信息,并且最好有一些关于错误。

javascript rest apollo graphql apollo-server

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

html5视频标签中的Mp4视频无法在移动Chrome和移动游戏中播放

我有这个代码在html5页面播放视频:

  <video autoplay loop id="bgvid">
    <source src="video-background.mp4" poster="/poster.png" type="video/mp4">
  </video>
Run Code Online (Sandbox Code Playgroud)

问题是它不适用于移动Chrome(Android手机)和手机游戏(iPhone).但它适用于桌面上的"每个"浏览器(使用Safari,Chrome,Firefox测试)以及移动版Firefox(Android手机).

我该如何克服这个问题?

编辑: 添加此代码:

  var myVideo = document.getElementById("bgvid");

  function playVid() {
      myVideo.play();
  }

  function pauseVid() {
      myVideo.pause();
  }
Run Code Online (Sandbox Code Playgroud)

如果我添加一个触发函数playVid()的按钮就可以了.所以我认为问题在于自动播放.我试图用load事件触发函数,但它不起作用.

html5 mp4 android mobile-safari mobile-chrome

11
推荐指数
1
解决办法
2万
查看次数

HABTM轨道关系中的Pundit范围

我当前的Index操作如下所示:

  def index
    @proposals = current_user.proposals
  end
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

  def index
    @proposals = policy_scope(Proposal)
  end
Run Code Online (Sandbox Code Playgroud)

我和has_and_belongs_to之间有关系.UserProposal

我开始Pundit在我的应用程序中使用gem,但我不知道如何定义范围以便为普通用户提供上面显示的行为.

我想做这样的事情:

  class Scope < Scope
    def resolve
      if user.admin?
        scope.all
      else
        user.proposals # HOW DO I DO THIS WITH THE SCOPE?
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

如何user.proposals使用范围变量?我知道,如果我有一个has_manybelongs_to关系,我可以这样做:

      else
        scope.where(user_id: user.id) # RIGHT?
      end
Run Code Online (Sandbox Code Playgroud)

但就HABTM而言,我不知道该怎么做.

有帮助吗?

ruby ruby-on-rails has-and-belongs-to-many ruby-on-rails-4 pundit

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

如何计算两个字符串之间的相等字数?

如何计算出现在两个字符串中的单词数?

我在考虑这样的事情

      let $nequalwords := count($item[text() eq $speech])
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

我想与两个人for逐字逐句比较,但我不知道是否有更好的方法来做到这一点.

xpath xquery

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

访问 HABTM 连接表记录

我的应用程序中有一个 HABTM 关系,如下所示:

class Book < ActiveRecord::Base
  has_and_belongs_to_many :authors
end

class Author < ActiveRecord::Base
  has_and_belongs_to_many :books
end
Run Code Online (Sandbox Code Playgroud)

在 Rails 控制台中,我可以像这样访问 Book 和 Author 的记录:

Book.all
Book.first
b = Book.first
b.title = "Title2"
b.save
...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何访问连接表。

如何访问和查看连接表中的记录books_authors

是否可以更改连接表行?

many-to-many join ruby-on-rails rails-console ruby-on-rails-4

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

索引迁移的名称太长

我必须创建一个迁移来进行数据库级别验证.迁移:

 class DataBaseLevelValidation < ActiveRecord::Migration
  def change
    add_index :benefits_business_changes, [:benefit_id, :business_change_id], :unique => true
  end
end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我尝试运行时,rake db:migration我有这个错误:

Index name 'index_benefits_business_changes_on_benefit_id_and_business_change_id' on table 'benefits_business_changes' is too long; 
the limit is 62 characters/Users/mariocardoso/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/schema_statements.rb:797:in `add_index_options'
Run Code Online (Sandbox Code Playgroud)

但如果我将名称更改为更短的版本,我会得到:

SQLite3::SQLException: no such table: main.benefits_businessc: CREATE UNIQUE INDEX "index_benefits_businessc_on_benefit_id_and_business_change_id" ON "benefits_businessc" 
Run Code Online (Sandbox Code Playgroud)

我怎样才能克服这个问题?

我看到的唯一方法是将"business_change"模型更改为更短的名称(模型,视图,迁移,......所有内容).

有没有办法运行此迁移而没有长名称引起的错误?

database ruby-on-rails rails-migrations ruby-on-rails-4

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