【问题标题】:Request returns nothing请求不返回任何内容
【发布时间】:2016-06-17 23:16:53
【问题描述】:

我已经设法将我的 Web 服务连接到数据库,但现在每当我发出请求时,它什么都不返回。数据库有几行,但 Web 服务返回零。

get '/all_users/' do
  conn = TinyTds::Client.new(username: 'nicole', password: 'pass', dataserver: 'Nikki-PC\Mydatabase', database: 'Thedatabase')
  recordsArray = "{\"clientList\":["
  clientArray = Array.new
  sql = 'select * from dbo.ServerUsers'
  records = conn.execute(sql) do |record|
    client = AndroidtableClientsSearch.new(record[0], record[1], record[2], record[3], record[4])
    clientArray << client.to_s
  end
  recordsArray << clientArray.join(',')
  recordsArray << "]}"
  recordsArray
end

我很确定我正在执行,但这是我第一次使用 tiny_tds,我很困惑。 感谢您的帮助。

[编辑] 这是 AndroidClientsSearch:

class AndroidtableClientsSearch
   def initialize(username, password, phone_number, profile_state, clasa)
    @username = username
    @password = password
    @phone_number = phone_number
    @profile_state = profile_state
    @clasa = clasa
end

def to_s
    { :username => "#{@username}", :password => "#{@password}", :phone_number => "#{@phone_number}", :profile_state => "#{@profile_state}", :clasa =>"#{@clasa}"}.to_json
end
end

[更新] 我已按照建议修改了代码,它返回了一个结果,但它没有从数据库中返回数据。 这是一个结果:

{"recordsArray":["{\"username\":\"\",\"password\":\"\",\"phone_number\":\"\",\"profile_state\": \"\",\"clasa\":\"\"}"]}

【问题讨论】:

  • 什么是record[N]? 旁注: 通过 habd 构建 json 字符串是一个非常糟糕的主意。创建一个哈希,然后调用JSON.dump(hash)。
  • 我的数据库有 5 列,我创建了包含 5 个元素的 AndroidTableClientsSearch 类

标签: ruby-on-rails ruby tiny-tds


【解决方案1】:

conn.execute(sql) 不接受块,它只是返回一个结果。之后的 proc 被 ruby​​ 解释器视为“孤儿 proc 定义”并且永远不会被执行。您可以尝试将puts 'I am here' 放入其中,然后发现它永远不会被调用。

解决方案是迭代结果:

get '/all_users/' do
  conn = TinyTds::Client.new(...)
  sql = 'select * from dbo.ServerUsers'

  #                           ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ iterate!!!
  records = conn.execute(sql).each_with_object([]) do |record, memo|
    client = AndroidtableClientsSearch.new(*5.times.map { |i| record[i] })
    memo << client.to_s
  end

  require 'json'
  JSON.dump(clientList: records)
end

【讨论】:

  • 嘿,谢谢你的建议,它确实有帮助,但我仍然得到一个空的json:“recordsArray”:“{“username”:“”,“password”:“”, "phone_number":"","profile_state":"","clasa":""}"
  • 在迭代器中打印出record.inspect,你就会对出了什么问题有一个印象。
  • record.inspect 显示数据在那里,但它在途中丢失了
  • 当我检查客户端时,它显示所有数据都变为 nil:username = nil,password = nil,phone_number = nil,profile_state = nil,clasa = nil
  • 我已经修好了 :) 非常感谢您的帮助和建议。你救了我的命。再次感谢您
猜你喜欢
  • 2021-07-07
  • 2018-05-03
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
相关资源
最近更新 更多