如何在Sails.js

时间:2016-07-18 11:38:15

标签: node.js postgresql sails.js sails-postgresql

我正在使用nodejs重建遗留的PHP应用程序,经过大约一周的探索后我选择了sailsjs。一切都很好,直到我意识到在风帆中你只能访问控制器中的会话变量。因此,我无法与模型建立动态连接。

遗留应用程序使用PHP会话全局变量在身份验证后连接到不同的postgresql数据库,我似乎无法在网络上找到解决方法。我在网上看到了类似的关于帆的问题。任何节点/风帆/数据库极客?

我正在考虑使用sails进行身份验证,因为它已经可以运行并使用expressjs来实现我的sails app然后通过以某种形式的微服务架构发送db connection params来调用的服务。

目前在localhost:1337上运行sails,在localhost:3000上运行我的快递。这是一个很好的方式吗?

3 个答案:

答案 0 :(得分:1)

我认为您无法动态更改模型中定义的<a href="#" title="Read more about Manchester United"><div class="block"> <h3>Book a season ticket with Manchester United</h3> <ul> <li>Read more about Manchester United <span class="bold">></span></li> </ul> </div> </a> 属性。但是,您可以尝试不在连接将动态更改的模型中设置任何连接,并根据用户设置默认配置连接。有点像:

connection

这样,您的User.find(1, function(err, user){ connection = select_connection_for_phones(user); // changing the model connection dinamically // You should not define any connection in the model. sails.config.models.connection = connection; Phone.find({user : user.id }, do_something_else); }); 将收到用户并返回字符串连接,您为模型设置全局配置连接,然后启动查询。如果您的型号Phone没有定义连接,它将使用默认值。

相反的方式可能是:

select_connection_for_phones

在这种情况下,您应该使用相同的连接设置模型,并动态更改连接的属性。

答案 1 :(得分:1)

我在这里回答了我自己的问题,这里也提出了类似的问题,所提供的答案似乎都没有。我没有在我的模型中使用水线,而是成功使用了pg模块,

$ npm install pg --save
var pg = require('pg');

通过这种方式,我可以动态地将连接字符串从我的控制器传递给我的模型,并忽略水线ORM。

我创建了一个sails服务来获取和设置每个会话的数据库连接字符串。

然后,对于每个查询,我传递存储在会话中的连接字符串:

var sessionConnection = ConnectionsService.getSessionConnection(req,res);

  pg.connect(sessionConnection, function(err, client, done) {
     // do connection stuff and queries here

  });

希望这有助于其他人

答案 2 :(得分:0)

我使用extras函数从sails-postgresql v0.11.4创建一个sails适配器。 https://www.npmjs.com/package/sails-postgresql-pp