sailsjs 中的全局设置

global settings in sailsjs

在我的 sailsjs 应用程序中处理全局 "settings" 的正确方法是什么?用户将希望通过我的应用程序的 Web 前端更改这些设置。

我想我可以使用只有一个项目的新模型 "GlobalSettings",但我真的不知道这是否是一个好的 "MVC" 做法。

config/globals.js 文件似乎是放置全局配置设置的好地方。

For convenience, Sails exposes a handful of global variables. By default, your app's models, services, and the global sails object are all available on the global scope; meaning you can refer to them by name anywhere in your backend code (as long as Sails has been loaded). Nothing in Sails core relies on these global variables - each and every global exposed in Sails may be disabled in sails.config.globals (conventionally configured in config/globals.js.)

Sailsjs.org Documentation - Globals

或者您可以使用 sails.config 对象。

Custom Configuration

Sails recognizes many different settings, namespaced under different top level keys (e.g. sails.config.sockets and

sails.config.blueprints). However you can also use sails.config for your own custom configuration (e.g. sails.config.someProprietaryAPI.secret).

From the docs

还有默认为全局的服务。

Overview Services can be thought of as libraries which contain functions that you might want to use in many places of your application. For example, you might have an EmailService which wraps some default email message boilerplate code that you would want to use in many parts of your application. The main benefit of using services in Sails is that they are globalized--you don't have to use require() to access them.

这真的取决于你想要什么样的全局。

由于它基于用户输入,因此必须将其存储在数据库中,因此将其存储在模型中对我来说似乎是一个正确的选择。

只有 1 个 row/collection 在我看来完全没问题,尤其是在没有 SQL 的领域。但是为了提高可重用性和可扩展性,您可能需要考虑将每个设置实际存储在单独的行中,这可能会给您 space 以在将来扩展它的可用性。

在我看来,我总是发现随着 Web 应用程序的发展,您会开始意识到您希望用户根据自己的喜好设置越来越多的字段,这是放松应用程序的好习惯。

对我来说,我通常会设置一个 meta_data 模型,其中包含名称、值、条件和一些其他字段。

例如,当查看您的网页时,'Alice' 可能需要黑色背景,'Bob' 可能需要绿色背景。然后你可以让他们修改或插入行到这个 meta_data 集合中。然后在您的数据库中,您将拥有

name              value              criteria
background_color  black               user_name='Alice'
background_color  green               user_name='Bob'

可以是各种值

当然,如果您只有一个值可以被所有用户更改,那么知道是谁更新了它们可能是个好主意。为此,您需要创建一个触发器(如果您使用的是 sql 数据库)see trigger in mysql,以便 table 上的每次更新都将触发一个函数,该函数存储已更改的内容并且谁在另一个 table

中更改了它

所以是的,回答你的问题,有一个模型来存储一个值是完全可以的,不要担心只有一行,随着你开发你的应用程序,你会有更多。