Sails.js / Waterline - 修改createdAt和updatedAt会抛出错误:Anchor还不支持函数

时间:2017-01-16 11:23:23

标签: node.js express sails.js waterline

我尝试为createdAt实现时间戳并更新但我无法使其正常工作。每次它抛出以下错误:Anchor还不支持函数!

Entity.js

 module.exports = {

    autoCreatedAt: 'created_ts',
    autoUpdatedAt: 'updated_ts',
    attributes: {

        entity_name : {
            type : 'string'     
        },
        creationDate: {
            columnName: 'created_ts',
            type: 'datetime',
            defaultsTo: function() {return new Date().getTime;}
        },
        updateDate: {
            columnName: 'updated_ts',
            type: 'datetime',
            defaultsTo: function() {return new Date().getTime;}
        },
        toJSON: function() {
            var obj = this.toObject();
            delete obj.createdAt;
            delete obj.updatedAt;
            return obj;
        }

    },
    beforeUpdate:function(values,next) {
        values.updateDate = new Date().getTime;
        next();
    }

 };

1 个答案:

答案 0 :(得分:2)

我在这里可以看到2个错误。

  1. getTime是一个函数,所以如果您想使用它,您应该像new Date().getTime()一样使用它,但在这种情况下,您感兴趣的值只是new Date()

  2. 方法toJSON不应属于属性。并且已删除的属性的名称现在不正确。

  3. 修复后的代码:

     module.exports = {
    
        autoCreatedAt: 'created_ts',
        autoUpdatedAt: 'updated_ts',
        attributes: {
    
            entity_name : {
                type : 'string'     
            },
            creationDate: {
                columnName: 'created_ts',
                type: 'datetime',
                defaultsTo: function() {return new Date();}
            },
            updateDate: {
                columnName: 'updated_ts',
                type: 'datetime',
                defaultsTo: function() {return new Date();}
            }
        },
        beforeUpdate:function(values,next) {
            values.updateDate = new Date();
            next();
        },
        toJSON: function() {
            var obj = this.toObject();
            delete obj.creationDate;
            delete obj.updateDate;
            return obj;
       }
    
     };