Javascript 如何在blueprint api中显示模型方法
我使用sail主要是为了提供一个可靠的后端restfulapi。我的问题是,在我的模型中,我需要计算一些元素,因为不需要将这些元素存储在数据库中。当我使用中的内容编写这些方法时:bluePrint API调用的结果不会显示 因此,要继续使用此模型:Javascript 如何在blueprint api中显示模型方法,javascript,sails.js,Javascript,Sails.js,我使用sail主要是为了提供一个可靠的后端restfulapi。我的问题是,在我的模型中,我需要计算一些元素,因为不需要将这些元素存储在数据库中。当我使用中的内容编写这些方法时:bluePrint API调用的结果不会显示 因此,要继续使用此模型: module.exports = { autoPK: true, attributes: { host: { type: 'string', }, url: {
module.exports = {
autoPK: true,
attributes: {
host: {
type: 'string',
},
url: {
type: 'string',
},
start: {
type: 'date',
},
end: {
type: 'date',
},
getDuration: function(){ // <---- I need to get this info using bluePrint
var diff = this.end - this.start;
return diff;
}
}
};
我希望上面的json带有额外的字段“持续时间”
编辑:
下面是如何实施它的答案:
module.exports = {
autoPK: true,
attributes: {
host: {
type: 'string',
},
url: {
type: 'string',
},
start: {
type: 'date',
},
end: {
type: 'date',
},
getDuration: function(){
return (new Date(this.end).getTime() - new Date(this.start).getTime()) / 1000;
},
toJSON: function() {
var session = this.toObject();
session.duration = this.getDuration();
return session;
}
}
};
听起来您想覆盖模型的
toJSON
函数来增强它。请看这里:
在
toJSON
函数中,您可以添加任何所需的属性。我认为您的问题是,您试图比较两个字符串,结果是NaN
因此,您必须首先将两个日期转换为日期对象
我想这样做:
getDuration: function()
return (new Date(this.end).getTime() - new Date(this.start).getTime()) / 1000;
}
然后你在几秒钟内就得到了差异。
另外,在更换型号/控制器后,不要忘记“重新发布”你的应用程序。你是对的日期比较没有做对,但这不是重点,因为即使返回静态值也不起作用
getDuration: function()
return (new Date(this.end).getTime() - new Date(this.start).getTime()) / 1000;
}