2

私は、人に関する基本情報を含むフォームを持つ node.js を使用して Web アプリケーションに取り組んでいます。Web アプリケーションが開始されてから追加されたすべてのレコードを送信ページに表示する必要があります。

この情報を格納するには配列を作成する必要があると思いますが、ここから混乱が始まります。情報を追加する配列を作成する場所がわかりません。app.post('/add', routes.add); を呼び出す app.js にあるはずだと思います。

ここで見つけた例から、このようなものが必要だと思います。JavaScript配列に新しい複雑なエントリを追加するにはどうすればよいですか? :

// Routes

app.get('/', routes.index);
app.post('/add', routes.add);

var people = [{name, country, date, email, phone}];
people.push({name, country, date, email phone});

ただし、配列は 1 人分の情報しか保持できないようです。

私の質問が十分に明確でない場合はお知らせください。明確にするよう努めます

前もって感謝します!

編集:routes.addを呼び出すと、このコードがindex.jsファイルから実行されると思います

exports.add = function(req, res){
    res.render('add', { title: 'Person added',
            name: req.body.name,
            country: req.body.country,
            date: req.body.birthday,
            email: req.body.email,
            phone: req.body.phone});
};

add.jade ファイル: h1 追加情報 p 名前: #{name} p 国: #{country} p 日付: #{date} p メール: #{email} p 電話: #{phone}

4

1 に答える 1

0

始めるためにいくつかのことがあります。

データベース

データベースを別のファイルに移動することをお勧めします。そうすれば、後で「実際の」データベースに置き換えることができます。すなわち。次のようにします。

  • アプリのルートに lib ディレクトリを作成し、
  • そのディレクトリに db.js を作成し、
  • このコードを db.js に追加します。

     var database = [],
        counter = 0;
        // add method adds a new object to db.
        exports.add = function(person) {
          person.id = counter;
          counter = counter + 1;
          database.push(person);
          return id; // we return id, so that we can use it as a reference to this object.
        }
        // get method retreives the object by id.
        exports.get = function(id) {
          return database[id]; // this will return undefined if there is no such id
        };
        exports.list = function(){
          return database;
        }
    

これでデータベースができました。

コントローラー

次のように、他のファイルで db を使用します。

 var people = require('lib/db');
// or if you're in a routes directory,require('../lib/db') or appropriate path
 people.add({name: 'Sarah'}); // returns 0
 people.add({name: 'Zlatko'}); // returns 1
 people.get(1); // returns {name: 'Zlatko'}

これで、routes/index.js にデータベースを含めて、これを使用してユーザーまたはすべてのユーザーを保存または取得できます。exports.add に似たもの:

var id = people.add({name: req.body.name, email: req.body.email});
res.render('add', people.get(id));

{people: people.list()}「人」ビューを作成して、オブジェクトをパラメーター配列として渡すこともできます。

例をより明確にするために、検証、チェック、何も含めませんでした。このデータベースは複数の人を収容でき、開始するには十分です。そして、それが何をするかは明らかだと思います。

これが役立つことを願っています。

于 2013-10-16T23:05:49.180 に答える