2012-08-03 3 views
0

Я создал простой проект node.js, используя команду «express -e sample».Node.js - Как импортировать модули зависимостей в общей папке под экспресс

У меня есть файлы javascript, css под/общедоступным каталогом и файлами ejs под представлениями, а мой server.js находится в корневом каталоге.

Я создал страницу формы, и когда пользователи отправляют ее, я вызываю функцию в одном из файлов js, который находится под/public/javascripts.

Все работает отлично. Теперь я хочу сохранить ввод формы в мою базу данных (mysql), поэтому я попытался получить mysql, но это не удалось. Оператор предупреждения говорит, что объект не определен.

var database = require('mysql').Client; 

Однако эта же команда отлично работает в server.js. Он печатает свойства моей базы данных.

+0

Что такое точное сообщение об ошибке вы получаете? Как вы «* вызывают функцию в одном из моих js-файлов, который находится под/public/javascripts *»? Откуда вы его вызываете? – penartur

+0

@Penartur Я включил javascript в свой файл index.ejs и onclick кнопки submit, я вызываю функцию. Например: . – Vinoth

ответ

1

<input type="submit" onclick="processFormData();"/> - это код, вызывающий функцию processFormData(); на стороне клиента (в браузере), как только пользователь нажимает кнопку.

Таким образом, var database = require('mysql').Client; также выполняется на клиенте.

Очевидно, что в браузере нет require; и даже если в браузере была require и mysql библиотека - возможно, вы все равно захотите внести изменения в БД с сервера, а не с клиента (не отправляя клиенту ваши учетные данные БД).

Для того, чтобы сделать это, вы должны:

  1. Снимите onclick обработчик и позволяет пользователю отправить форму;
  2. На сервере обрабатывайте предоставленные данные формы и делайте все, что хотите, с помощью БД.

В качестве альтернативы, если вы хотите использовать свой текущий «написать один раз, работает везде» подход, вы можете быть заинтересованы в альтернативных платформ, таких как Meteor и OPA language

+0

Я не мог отделить кодировку клиента и сервера в своих мыслях. Теперь я понимаю это. Я изменил, как вы сказали, и это отлично поработало. Я обрабатываю запрос POST на стороне сервера и вставляю данные в mysql. Благодарю. – Vinoth

Смежные вопросы