mongoose和restify – 返回json之前本地化string

我想基于node.js,restify和mongoose返回RestFul API中的多语言业务对象的本地化string。 我有要求将翻译的资源存储在我们的翻译资源服务器上,还需要支持这些业务对象的dynamic创build。

我发现了一个解决scheme,在创build或更新我的多语言业务对象时,在所有模式中使用单个pre-'ave mongoose中间件,轻松地在POST / PUT调用中插入i18n进程 – 这是可行的,因为我能够通过请求上下文到obj.save(req,callback)调用。

但是,我正在努力在简单的GET上插入i18n。 我想到了,并尝试了不同的方式,我可以在返回响应之前插入国际化,但是并没有find一个好的方法。 我想到的选项:

  • 在一个mongoose中间件pre / post('init')中翻译:

    问题:我无法访问请求上下文,因此不知道要返回的语言环境,所以我无法在此处进行翻译。

  • 在toObject()/ toJSON {transform:}中转换:

    同样的问题 – 我没有在这些钩子的请求上下文。

  • 在每个资源的处理程序/控制器方法中进行翻译。

    问题:复制,我必须在任何地方做,我真的更喜欢我可以在模型/架构图层上定义的解决scheme

  • 在翻译/expression中间件到最后:

    问题:我无法再访问mongoose模式元信息,所以我不知道要翻译哪些属性。

编辑:只是发现这个额外的方式: – 翻译自定义restify responseFormatter:

这似乎很好地工作,在reponseformatter我有权访问我需要的一切。 从build筑的angular度来看,这似乎有些不可思议,但是如果没有人有更好的主意,我会加上这个答案。

也许(希望)我失去了明显的东西…

感谢任何提示