Посмотрите на этот пример:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,$http) {
var getJoke = function(){
return $http.get('http://api.icndb.com/jokes/random').then(function(res){
return res.data.value;
});
}
getJoke().then(function(res) {
console.log(res.joke);
});
});
Как вы можете видеть, getJoke
возвращает разрешенное обещание (оно разрешено при возврате res.data.value
). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).
Это plnkr:
Чтобы объединить все столбцы в таблице, вы не можете использовать ключевое слово *
, но вам нужно явно указать все столбцы:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
или вы можете использовать CONCAT_WS
который будет пропускать нулевые значения:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Если вы не хотите указывать все имена столбцов вручную, вы можете использовать динамический запрос. Этот запрос вернет все имена столбцов вашей таблицы:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
и с помощью GROUP_CONCAT вы можете получить список всех имен столбцов:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
, процитированных в запятой format:
`col1`,`col2`,`col3`,`col4`,...
, поэтому теперь у нас есть все элементы для создания нашего запроса динамически:
SELECT
CONCAT(
'SELECT CONCAT_WS(\'\',',
GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
') AS all_columns FROM yourtable;')
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable'
INTO @sql;
этот запрос установит строку @sql на что-то вроде:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
, и этот код выполнит его:
PREPARE stmt FROM @sql;
EXECUTE stmt;