我正在使用Sails.js
来构建我的API,因此,作为航行的一部分,我可以覆盖或修改customToJSON
方法。基本上,这就是问题所在,customToJSON
方法是一种同步方法,但是我正在内部执行一些异步操作。有我的代码:
async customToJSON() {
// set the interpolate characteres to `{{` and `}}`
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
const NOTIFICATION_TYPE = notificationTypes[this.type];
// --->>> THIS IS THE ASYNC METHOD <<<---
const templateParams = await Notification._getTemplateParams(this);
// compile templates
const compiledLink = _.template(
NOTIFICATION_TYPE.link, { imports: templateParams }
);
const compiledTitle = _.template(
NOTIFICATION_TYPE.title, { imports: templateParams }
);
const compiledDescription = _.template(
NOTIFICATION_TYPE.description, { imports: templateParams }
);
return {
..._.omit(this, ['relatedModels']),
_params: templateParams,
link: compiledLink(templateParams),
title: compiledTitle(templateParams),
description: compiledDescription({}),
}
},
它不起作用,因为sails被设计为以 sync 的形式运行此方法。所以问题是:有什么方法可以强制履行诺言?
我将node v8.10
和sails v1
与action2
一起使用
答案 0 :(得分:0)
当前customToJSON函数不支持异步 功能。
(单击链接以获取更多详细信息)
因此customToJSON
中不能包含异步代码。相反,您应该先调用Notification._getTemplateParams
函数。