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

有一些事情可以让你开始。

数据库

我建议您将数据库移动到另一个文件,这样您以后可以将其替换为“真实”数据库。IE。做这样的事情:

  • 在应用根目录下创建一个 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 回答