@Osklizg

Как вывести табличные значения в LUA?

Немного переделал готовый скрипт на LUA, который нужен, для отображения информации о БД Tarantool.
local log = require('log')
local console = require('console')
local server = require('http.server')

local HOST = '172.27.40.17'
local PORT = 8008

box.cfg {
log_level = 5,
memtx_memory = 1073741824,
wal_max_size = 5,
log = 'tarantool.log',
background = true,
pid_file = '1.pid',
}

console.listen('172.27.40.17:3311')

if not box.space.examples then
     s = box.schema.space.create('examples')
          s:create_index('primary', {type = 'hash', parts = {1, 'string', 2, 'string', 3, 'string'}})

end

function handler(self)
   local id = self:cookie('tarantool_id')
        local ip = self.peer.host
        local data = ''
        log.info('Users id = %s', id)
        if not id then
             data = 'Welcome to tarantool server!'
                 box.space.examples:auto_increment({ip})

 id = box.space.examples:len()
                 return self:render({ text = data}):
                        setcookie({ name = 'tarantool_id', value = id, expires = '+1y' })
        else
                 local count = box.space.examples:len()
                 data = 'В базе имеется ' .. count .. ' кортежей'
                 return self:render({ text = data })
        end
end

httpd = server.new(HOST, PORT)
httpd:route({ path = '/' }, handler)
httpd:start()


Теперь я хочу выводить не только количество кортежей, но и сами значения кортежей. И меняю:
local count = box.space.examples:len()
на
local count = box.space.examples:select()
На что мне выдается ошибка: Unhandled error: /home/roman/httptarantool.lua:48: attempt to concatenate local 'count' (a table value)
Я понимаю, что ругается на неподходящее значение, но не могу понять, где в скрипте заменить значение на табличное.
  • Вопрос задан
  • 831 просмотр
Пригласить эксперта
Ответы на вопрос 1
mva
@mva
CEO, CTO, Lua/Gentoo/IPv6 Pioneer
1) https://www.lua.org/about.html#name (TL;DR: не LUA, а Lua)
2) Нужно, всё же, понимать, что вы делаете.
Когда вы выполняете `:select()`, вы получаете таблицу.
А ниже вы пытаетесь её конкатенировать (что, в принципе, неправильно даже для `number`-значений, и неплохо бы использовать в этом месте `tostring()`. А в случае же таблицы, чтобы вывести значения нужен цикл.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы