не удалось вызвать функцию http_get my MySql [duplicate]

Простая функция, допускающая либо путь строки, либо массив.

function get(obj, path) {
  if(typeof path === 'string') path = path.split('.');

  if(path.length === 0) return obj;
  return get(obj[path[0]], path.slice(1));
}

const obj = {a: {b: {c: 'foo'}}};

console.log(get(obj, 'a.b.c')); //foo

ИЛИ

console.log(get(obj, ['a', 'b', 'c'])); //foo
1
задан BCS 15 November 2008 в 22:40
поделиться

4 ответа

Я не знаю никакой функции вроде этого как часть MySQL.

Альтернативным решением может быть использование функции importHtml в электронной таблице Google.

Таблицы Google позволяют вам импортировать данные в Интернете

g0]

2
ответ дан andyuk 27 August 2018 в 10:11
поделиться
  • 1
    Да. Однако данные двоичные, поэтому по этой причине (и другие) google не будет работать. – BCS 15 November 2008 в 01:38
  • 2
    Тем не менее, это выглядит как классная идея. – BCS 15 November 2008 в 01:38

Нет, слава богу, это был ужас безопасности. Каждое отверстие для инъекций SQL в приложении может быть использовано для запуска спам-соединений для атаки на другие сайты.

Вы могли бы, я полагаю, записать его на C и скомпилировать его как UDF. Но я не думаю, что это действительно дает вам что-либо по сравнению с просто SELECT в вашем прикладном уровне и зацикливание результатов, выполняющих HTTP GET и UPDATE. Если мы говорим о создании HTTP-соединений, дополнительная эффективность выполнения этого в слое базы данных будет в любом случае полностью затмевана сетевыми задержками.

5
ответ дан bobince 27 August 2018 в 10:11
поделиться
  • 1
    Проблема в том, что приложение select / loop / http get, которое вы предлагаете, является единственным дополнительным кодом DB, который у меня есть в проекте (кстати, это то, что я делаю прямо сейчас). Без него проект будет доходить до одного компонента, а сам БД. – BCS 15 November 2008 в 22:43
  • 2
    Я вижу ... и пользовательский UDF тоже не был бы улучшен, так как сам он был бы дополнительным компонентом и еще более раздражающим для развертывания, чем любой язык / инструмент, который вы используете сейчас. – bobince 16 November 2008 в 02:59
  • 3
    Что касается других СУБД, которые могут это сделать, Oracle имеет UTL_HTTP, и вы, вероятно, можете сделать это с SQL Server через объект WinHttp. Опять же, установка любого из них не совсем удобна! – bobince 16 November 2008 в 03:06

Неправда. Лучшая практика в веб-среде заключается в том, что серверы баз данных изолированы снаружи, в обоих направлениях, что означает, что db-серверу не разрешат извлекать данные из Интернета.

1
ответ дан jishi 27 August 2018 в 10:11
поделиться
  • 1
    Хороший момент, однако n / a в моих случаях, поскольку он не является веб-средой больше, чем обычный настольный компьютер (см. править) – BCS 15 November 2008 в 22:44

Не делайте этого.

Если вы абсолютно уверены, что хотите получать веб-контент из среды SQL, то насколько я знаю две возможности:

  1. Write пользовательский MySQL UDF в C (как упоминалось в bobince). Потенциально потенциально может быть огромная работа, в зависимости от вашего опыта работы на C, насколько вы хотите безопасности, насколько вы хотите, чтобы UDF был следующим: например. Просто GET-запросы? Как насчет POST? ГЛАВА? и т. д.
  2. Используйте другую базу данных, которая может сделать это. Если вы довольны SQL, возможно, вы можете сделать это с помощью PostgreSQL и одного из оснащенных языков, таких как Python или PHP.

Если вы не слишком суетились о том, чтобы придерживаться SQL, вы можете использовать что-то вроде eXist . Вы можете сделать это довольно легко с помощью XQuery и могли бы легко изменить результаты в соответствии с вашей схемой (а не просто вставлять их в поле blob) или сохранить страницу «как есть» в качестве документа xhtml в БД.

Затем вы можете быстро запускать запросы во всех документах, например, получить все ссылки или цитаты или что-то еще. Вы даже можете применить XSL к такому результату с очень небольшой дополнительной работой. Отлично, если вы сохраняете страницы для справки и хотите приспособить результаты к личным «интранет-стильным» приложениям.

Также, поскольку eXist ориентирован на документ, у него есть много отличных методов для нечеткого текста поиск в поисковых системах, поиск по слову и большой текстовый индекс (намного лучше, чем MySQL). Идеально, если вы после выполнения некоторого интеллектуального анализа данных на контенте, например: найдите мне все документы, где слово типа « burger » в 50 словах «hotdog», где слово не находится в Список UL. Попробуйте сделать , что является родным в MySQL!

Как в сторону, так и без злого умысла; Я часто задаюсь вопросом, почему eXist пересматривается, когда люди строят CMS. Его база данных, которая может хранить содержимое в своем собственном формате (XML или его подмножество (x) HTML), запросит его с легкостью в своем родном формате и может перевести его из его собственного формата с мощным языком шаблонов, который выглядит и действует как его собственный формат . Иногда SQL просто неправильно для работы!

Извините. Не значит, что вафли! : - $

0
ответ дан Phillip B Oldham 27 August 2018 в 10:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: