1

コマンド「express -e sample」を使用して、単純な node.js プロジェクトを作成しました。

/publicディレクトリの下にjavascript、cssファイル、ビューの下にejsファイルがあり、server.jsはルートディレクトリにあります。

フォーム ページを作成し、ユーザーがそれを送信すると、/public/javascripts の下にある js ファイルの 1 つで関数を呼び出します。

すべてが完璧に機能します。フォーム入力をデータベース(mysql)に保存したいので、mysqlを取得しようとしましたが失敗しました。アラート ステートメントは、オブジェクトが未定義であると述べました。

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

ただし、server.js では同じコマンドが正常に機能します。データベースのプロパティを出力します。

4

1 に答える 1

1

<input type="submit" onclick="processFormData();"/>processFormData();ユーザーがボタンをクリックすると、クライアント側 (ブラウザー内) で関数を呼び出すコードです。

したがって、var database = require('mysql').Client;クライアントでも実行されます。

明らかにrequire、ブラウザにはありません。requireブラウザにライブラリがあったとしても、mysqlおそらくクライアントからではなくサーバーからDBを変更したいでしょう(クライアントにDBクレデンシャルを送信しません)。

そのためには、次のことを行う必要があります。

  1. onclickハンドラーを削除し、ユーザーがフォームを送信できるようにします。
  2. サーバー上で、送信されたフォーム データを処理し、DB で必要なことを行います。

または、現在の「一度書けばどこでも実行できる」アプローチを使用したい場合は、 MeteorOPA 言語などの代替プラットフォームに関心があるかもしれません。

于 2012-08-03T06:43:40.590 に答える