Loopbackjs 连接数据和util函数的正确位置和方式

Loopbackjs 连接数据和util函数的正确位置和方式,loopbackjs,Loopbackjs,我正在将一个应用程序从sails.js迁移到loopback,并向所有loopback专家提出了一个新手问题 我有两套通过应用程序访问的函数 数据函数-模块之间用于获取特定配置和对象属性的通用函数 Util函数-用于字符串、对象、数组和数据操作的函数 在当前应用程序中总共有大约15个数据和25个util函数 关于编写存储函数,我有三个问题 服务器/中间件是编写这些函数的正确位置吗 如果函数存储在服务器/中间件位置,调用这些函数的阶段是“inital:after” 我注意到您不能在一个文件中存储多

我正在将一个应用程序从sails.js迁移到loopback,并向所有loopback专家提出了一个新手问题

我有两套通过应用程序访问的函数

  • 数据函数-模块之间用于获取特定配置和对象属性的通用函数
  • Util函数-用于字符串、对象、数组和数据操作的函数 在当前应用程序中总共有大约15个数据和25个util函数

    关于编写存储函数,我有三个问题

  • 服务器/中间件是编写这些函数的正确位置吗
  • 如果函数存储在服务器/中间件位置,调用这些函数的阶段是“inital:after”
  • 我注意到您不能在一个文件中存储多个中间件函数,每个函数都需要单独编写并在中间件中注册。如果函数存储在中间件中,是否需要为每个函数创建单独的文件?我希望尽可能将函数分组在几个文件中

  • 谢谢你阅读这篇文章。这些答案将非常有助于从其他平台以令人敬畏的环回方式迁移的用户

    共享函数和数据的一个想法可能是将它们公开给引导脚本中的
    loopbackContext
    对象thro中间件

    let loopback = require('loopback')
    app.use(function setContextMethods(req,res,next) {
      var ctx = loopback.getCurrentContext()
      if (ctx) {
        ctx.set('myData', data)
      }
    }
    
    在使用上下文对象的请求期间可以访问这些数据/方法(它们的可用性取决于您放置它们的中间件插槽,如session:after session:before等)

    访问它们的示例:

    User.afterRemote('login', function (context, token, next) {
      context.get('myData')
    }
    
    这允许您为每个请求公开数据/方法(并配置它们,例如,如果用户已登录或未登录),但您始终可以将它们放在utils.js文件中

    我不确定这是否是你想要的,但这是一个想法