将对象传递给Loopback模型

时间:2017-01-09 19:13:02

标签: loopbackjs strongloop

想知道是否有正确的方法可以让回送模型访问与主应用程序一起创建的某些对象。

例如: 我们有一个电子邮件服务,在模型上的某些事件中,我们希望将相关数据发送到此服务。

现在我目前的解决方案是

server.js

const app = loopback()
const email = createEmailService()
app.emailS = email

myModel.js

myModel.observe('before save', (ctx, next) => {
    myModel.app.emailS.send('example@test.com', ctx.instance.message)
}

希望这比将客户端设置为app对象更好。由于其他模型是通过myModel.app.models.OtherModel访问的,我认为我的方法没问题,但也许不是最好的方法。

1 个答案:

答案 0 :(得分:0)

在大多数情况下这很好用,但是你必须要小心它不会与app对象中的其他属性冲突,并且随着loopback项目的增长,它们可能会为它添加更多属性,所以请密切关注它。

我自己的偏好是将其实际放入模块中:

服务器/电子邮件service.js

...
module.exports = createEmailService();

公共/模型/ myModel.js

const emailS = require('../../server/email-service');
myModel.observe('before save', (ctx, next) => {
    emailS.send('example@test.com', ctx.instance.message)
}

这样您就不必担心污染环回名称空间。