Javascript 如何在blueprint api中显示模型方法

Javascript 如何在blueprint api中显示模型方法,javascript,sails.js,Javascript,Sails.js,我使用sail主要是为了提供一个可靠的后端restfulapi。我的问题是,在我的模型中,我需要计算一些元素,因为不需要将这些元素存储在数据库中。当我使用中的内容编写这些方法时:bluePrint API调用的结果不会显示 因此,要继续使用此模型: module.exports = { autoPK: true, attributes: { host: { type: 'string', }, url: {

我使用sail主要是为了提供一个可靠的后端restfulapi。我的问题是,在我的模型中,我需要计算一些元素,因为不需要将这些元素存储在数据库中。当我使用中的内容编写这些方法时:bluePrint API调用的结果不会显示

因此,要继续使用此模型:

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;
    }