【问题标题】:Sailjs and Mysql test using sails-mysqlSails Js和Mysql测试使用sails-mysql
【发布时间】:2015-01-23 17:06:26
【问题描述】:

我正在尝试通过sails-mysql 使用sails 简单地连接到远程数据库。

sails new sql
cd sql
npm install sails-mysql

然后我转到配置文件:

// config/adapters.js

module.exports.connections = {
  mysql: {
    adapter: 'sails-mysql',
    host: 'XXX.XX.XXX.XXX',
    user: 'name',
    password: 'secret',
    database: 'test'
  }
};

然后在我的 /api/models/user.js 中

module.exports = {

  schema: true,
  autoCreatedAt: false,
  autoUpdatedAt: false,
  connection: 'mysql',
  tableName: 'test1',
  attributes: {
    name: {
      type: 'string',
      required: true
    },
    password: {
      type: 'string',
      required: true
    }
  }
};

我随后在我的远程主机上设置了一个数据库测试和表 test1(并允许所有访问)。 如果我随后在浏览器中发送查询

 http://localhost:1337/user/create?name=user1&password=pass1

它失败了,但 chrome 控制台根本没有多大帮助。但是,当我使用sails 提供的localhostdb 时,它确实有效吗?

我已手动将一些名称和密码添加到我的数据库中,但我不知道如何查询它。我的问题归结为这一点。谁能给我一些关于 Sails、Mysql 和sails-mysql 如何交互的指导?例如,有人可以告诉我如何 i) 正确连接到数据库,以及 ii) 使用模型、控制器与基本 CRUD 操作进行交互。我将如何注册一个用户,将他添加到我的数据库中,并允许他更新他的名字?感谢堆栈!

【问题讨论】:

  • 控制台中显示了什么错误。你生活在你的sails.js 应用程序中吗?
  • 我发现了我的问题,很快就会发布一个例子
  • @mathew 等你的例子:)

标签: mysql sails.js crud


【解决方案1】:

好的,这就是它的完成方式。

sails new sql
cd sql
npm install sails-mysql

如上图。现在生成一个新的用户 api。

sails generate api user

关注的文件是 api/controllers/UserController.js、api/models/User.js、config/connections.js 并创建一个名为 views/new.ejs 的新文件,如下所示

views/new.ejs

<form action="/user/create" method="POST">  
    <h2> Create an account</h2>
    <input type="text" placeholder="name" name="name">  
    <input type="submit" value="Create Account"/>
</form>

现在更新你的 UserController.js

module.exports = {
    index: function(req, res){
   'use strict';
    res.view('new.ejs');
  } 
};

保存所有内容,您可以“扬帆”并将浏览器指向 localhost:1337/user,您将看到表单(没有任何效果)

更新您的 User.js 模型。您会注意到 POST 操作正在调用 user/create。这个创建函数显示在我们的 User.js 中。

请注意下面的 User.create 行。User = 用户模型(sails 为我们执行此操作) create = 一个水线功能,使我们能够节省时间而不使用 MySQL。

module.exports = {
    index: function(req, res){
   'use strict';
    res.view('new.ejs');
  }
    create: function(req, res) {  
    User.create(req.params.all(), function userCreated(err, user) {
        return res.redirect('/user/new');  
     }
     res.redirect('user/show/' + user.name);
    });
  },    
};

如上所述更新您的 config/connections.js

module.exports.connections = {
  mysql: {
    adapter: 'sails-mysql',
    host: 'XXX.XX.XXX.XXX',
    user: 'name',
    password: 'secret',
    database: 'test'
  }
};

现在最重要的事情是正确配置你的 MySQL,这就是我在战斗的地方。

因为 MySQL 主机不是本地的,您需要通过 ssh 或 phpMyAdmin 登录它。做一个数据库'test'并添加一个表'tbl_users'

然后你需要允许从你的本地 IP 访问数据库的权限,就像这样。

GRANT ALL PRIVILEGES ON *.* TO 'user'@'XXX.XXX.XX.XXX'WITH GRANT OPTION;

就这么简单。

编辑遵循相同的原则,观看这些视频以获得更多帮助:http://irlnathan.github.io/sailscasts

我相信每个人都会以不同的方式做这件事,所以请发布您的问题/建议,我们会为您解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多