【问题标题】:Strongloop : loopback beforeCreate not calledStrongloop:未调用回送 beforeCreate
【发布时间】:2017-02-20 11:13:56
【问题描述】:

我有一个名为 question 的模型,我在该模型上定义了 beforeCreate 和 beforeUpdate 方法来设置 createdAt 和 updatedAt 时间戳。但是当我使用 api explorer 创建新问题时,它似乎从未调用过。

这是我的 question.json:

{
  "name": "question",
  "plural": "questions",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {
    "title": {
    "type": "string",
    "required": true
   },
   "body": {
     "type": "string",
     "required": true
    },
   "views": {
      "type": "number"
    },
   "createdAt": {
    "type": "date",
  "required": true
},
"updatedAt": {
  "type": "date",
  "required": true
},
"id": {
  "type": "number"
 }
 },
 "validations": [],
 "relations": {
 "tags": {
  "type": "hasMany",
  "model": "tag",
  "foreignKey": "question_id"
   }
 },
 "acls": [],
 "methods": []
}

和 question.js

module.exports = function(question) {
  question.beforeCreate = function (next, modelInstance) {
     modelInstance.createdAt = Date.now();
     modelInstance.updatedAt = Date.now();
     next();
 };
 question.beforeUpdate = function (next, modelInstance) {
     modelInstance.updatedAt = Date.now();
     next();
 };

};

我在创建时遇到的错误是:

  {
    "error": {
    "name": "ValidationError",
    "status": 422,
     "message": "The `question` instance is not valid. Details: `createdAt` can't be blank (value: undefined); `updatedAt` can't be blank (value: undefined).",
    "statusCode": 422,
    "details": {
    "context": "question",
     "codes": {
       "createdAt": [
       "presence"
      ],
    "updatedAt": [
      "presence"
    ]
  },
  "messages": {
    "createdAt": [
      "can't be blank"
    ],
    "updatedAt": [
      "can't be blank"
    ]
  }
},
"stack": "ValidationError: The `question` instance is not valid. Details: `createdAt` can't be blank (value: undefined); `updatedAt` can't be blank (value: undefined).\n    at /Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/dao.js:252:12\n    at ModelConstructor.<anonymous> (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/validations.js:460:11)\n    at ModelConstructor.next (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/hooks.js:75:12)\n    at ModelConstructor.<anonymous> (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/validations.js:457:23)\n    at ModelConstructor.trigger (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/hooks.js:65:12)\n    at ModelConstructor.Validatable.isValid (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/validations.js:433:8)\n    at /Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/dao.js:248:9\n    at doNotify (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/model.js:641:49)\n    at doNotify (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/model.js:641:49)\n    at doNotify (/Users/dev/Desktop/workspace/stackclone/node_modules/loopback-datasource-juggler/lib/model.js:641:49)"
  }
}

我的输入是:

{
 "title": "title",
 "body": "body",
 "views": 0
}

提前致谢

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

    模型钩子已被弃用,取而代之的是操作钩子:

    http://docs.strongloop.com/display/public/LB/Operation+hooks

    在您的情况下,移植到操作挂钩非常少:

    module.exports = function(Question) {
      Question.observe('before save', function(context, next) {
        context.instance.createdAt = new Date(2014,2,2);
        context.instance.updatedAt = Date.now();
        next();
      });
    };
    

    【讨论】:

      【解决方案2】:

      你可以在question.js试试这个方法

      module.exports = function(Question) {
        Question.beforeRemote('create', function(context, user, next) {
          var req = context.req;
          req.body.createdAt = new Date(2014,2,2);
          req.body.updatedAt = Date.now();
          next();
        });
      };
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多