请求 returns 无
Request returns nothing
我已经设法将我的 Web 服务连接到数据库,但现在每当我发出请求时,它 return 什么都没有。数据库有几行,但 Web 服务 return 为零。
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
[更新]
我已经按照建议修改了代码,它 return 是一个结果,但它不是 return 来自数据库的数据。
这是结果:
{"recordsArray":["{\"username\":\"\",\"password\":\"\",\"phone_number\":\"\" ,\"profile_state\":\"\",\"clasa\":\"\"}"]}
conn.execute(sql)
不接受一个块,它只是 returns 一个结果。之后的过程被 ruby 解释器视为“孤儿过程定义”并且永远不会被执行。您可能会尝试将 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
我已经设法将我的 Web 服务连接到数据库,但现在每当我发出请求时,它 return 什么都没有。数据库有几行,但 Web 服务 return 为零。
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
[更新] 我已经按照建议修改了代码,它 return 是一个结果,但它不是 return 来自数据库的数据。 这是结果:
{"recordsArray":["{\"username\":\"\",\"password\":\"\",\"phone_number\":\"\" ,\"profile_state\":\"\",\"clasa\":\"\"}"]}
conn.execute(sql)
不接受一个块,它只是 returns 一个结果。之后的过程被 ruby 解释器视为“孤儿过程定义”并且永远不会被执行。您可能会尝试将 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