gpt4 book ai didi

node.js - 如何动态连接到 Sails.js 中的数据库

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:32 26 4
gpt4 key购买 nike

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

遗留应用程序在身份验证后使用 PHP session 全局变量连接到不同的 postgresql 数据库,我似乎无法在网络上找到解决方法。我在网络上看到过类似的问题。周围有 Node/sails/数据库极客吗?

我正在考虑使用 sails 进行身份验证,因为它已经可以工作并使用 expressjs 来实现我的 sails 应用程序随后将通过以某种形式的微服务架构发送数据库连接参数来调用的服务。

目前在 localhost:1337 上运行 sails,在 localhost:3000 上运行我的 express。这是一个好方法吗?

最佳答案

我认为您不能动态更改模型中定义的 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);

});

这样,您的select_connection_for_phones 将接收用户并返回字符串连接,您为模型设置全局配置连接,然后开始查询。如果您的手机型号没有定义连接,它将使用默认值。

相反的方式,可能是这样的:

User.find(1, function(err, user){

connection = select_connection_for_phones(user);

// changing properties of the postgresql connection.
// You must define all your models with this connection.
sails.config.connections.postgresql.host = host_from_user(user);
sails.config.connections.postgresql.port = port_from_user(user);
Phone.find({user : user.id }, do_something_else);

});

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

关于node.js - 如何动态连接到 Sails.js 中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38435767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com