Sails.js:无法执行POST以插入mongoDB

时间:2014-11-15 01:36:35

标签: forms mongodb sails.js crud

我正在尝试编写一个玩具程序来提交表单并插入mongodb,但我一直在收到DB错误。让我在这里粘贴相关代码,希望能得到一些帮助。

我正在使用Sails ver 0.10.5和最新的mongo 2.6.5,我在Mac OSX 10.9上运行节点:

型号: Employee.js

module.exports = {

  attributes: {
                  name: {
                            type: "string",
                            required: true
                        },
                  email: {
                             type: "string",
                             required: true
                         },
                  password: {
                                type: "string",
                                required: true
                            }
  },
beforeCreate: function(values, next) {
      next();
    }
};

route.js:

module.exports.routes = {

  '/registeremployee': {
    controller: 'employee',
    action: 'register'
  },

  '/listemployees': {
    controller: 'employee',
    action: 'list_all'
  }
};

EmployeeController.js

module.exports = {

  index: function(req, res) {
    res.send(200, {title: "employee index page"});
  },

  list_all: function(req, res) {

    Employee.find().exec(function(err, employee) {

      if (err) {
        res.send(500, {title: 'error retrieving users'});
      } else {
        res.send(200, {'employees': employee});
      }
    });
  },

  register: function(req, res) {

    if (req.method == "GET") {
      res.view({title: "Form for registering employees"});
    } else if (req.method == "POST") {

      var username = req.param("username");
      var password = req.param("password");
      var email = req.param("email");

      console.log("saving the username: " + username);  //username printed as 'undefined'

      Employee.create({username: username, password: password, email: email}).exec(function(error, employee) {
        if (error) {
          console.log('error');
          res.send(500, {error: "DB error!"});
        } else {
          console.log('error');
          res.send(200, employee);

          console.log("saved employee: " + employee.username);
        }
      });
    }

  }
};

最后, register.ejs 模板文件:

<a href="/listemployees">List All Users</a>
<h2>Form - Create a User</h2>
<form action="/registeremployee" method="POST">
  <table>
    <tr><td>Name</td><td><input type=”text” name=”username” required></td></tr>
    <tr><td>Password</td><td><input type=”password” name=”password” required></td></tr>
    <tr><td>Email</td><td><input type=”email” name=”email” required></td></tr>
    <tr><td></td><td><input type="submit"></td>
  </table>
</form>

在我看来,表单不提交数据,因为参数在我的控制器中打印为undefined / null。

我在我的connections.js中有这个:

  mongo: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    user: '',
    password: '',
    database: 'sailsApp1'
  }

1 个答案:

答案 0 :(得分:0)

只需将name替换为username,您就可以在db。中保存数据。

module.exports = { 
    attributes: { 
        username: { 
            type: "string", required: true }, 
            email: { type: "string", required: true }, 
            password: { type: "string", required: true } }, 
    beforeCreate: function(values, next) { next(); } };