你好我想有数组存储的东西然后我访问它来填充数据库中的一些数据,我想知道如何做到这一点,以及如何将它们声明为全局,你可以解释使用下面的代码
我想使用数组存储一些数据,然后将数据放入数据库中,但我看不到能够这样做:我也在使用DataMapper
这两个post方法必须访问那些我需要弄清楚的全局数组。谢谢(我是sinatra新手)
module Scanner
class SellItemApp < Scanner::Base
configure do
set :in_customer,[] #to be used in adding multiple items
set :items, [] #to be used in adding multiple items
end
get '/something' do
erb :sale_records
end
post '/something1' do
.........
end
post 'something2' do
.....
end
end
end
答案 0 :(得分:2)
配置适用于静态数据,这些数据在应用程序的生命周期内不会更改,并且不是其状态的一部分。
使用配置在请求之间缓存数据不是一个好主意,原因如下:
passenger
或unicorn
容器中) - 一个进程/计算机中的数据更改不会填充到其他进程/机器 - 它将不一致。那么,应该你做什么?根据您的要求,有几种选择 - 数据是由所有用户共享还是在用户之间隔离?它应该持续一段时间吗?
答案 1 :(得分:0)
好吧,如果我理解伦纳德,他想要访问一些他打算用作临时数据库的“配置”变量。从Sinatra documentation引用
set :foo, 'bar'
set :baz, Proc.new { "Hello " + foo }
get '/baz' do
"baz is set to " + settings.baz
end
而我猜测(还没试过)如果你愿意的话,你可以将你的东西塞进去。但是请注意,如果重新启动服务器,这将丢失(尽管应该继续执行多个请求)。
如果您希望“存储的数据”能够在服务器重启后继续存在DataMapper
当然是正确的解决方案。请参阅相应的文档,了解如何执行此操作。对任何类型的数据“存储”使用配置机制可能不是一个好主意。