Вновь зарегистрированном реестре в afterCreate(newlyInsertedRecord, cb) {}
отсутствует все методы экземпляра.Sails.js afterCreate() передается newCreatedRecord без методов экземпляра
1 /**
2 * Dog.js
3 *
4 * @description :: TODO: You might write a short summary of how this model works and what it represents here.
5 * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models
6 */
7
8 module.exports = {
9
10 attributes: {
11 tail: 'string',
12 wag: function() {
13 console.log('wagging ', this.tail, 'tail')
14 }
15 },
16
17 afterCreate: function(dog, cb) {
18 dog.wag()
19 }
20 };
При выполнении Dog.create({tail:'green'}).exec(console.log)
, следующее сообщение об ошибке и трассировки стека происходит:
sails> TypeError: dog.wag is not a function
at module.exports.afterCreate (/tmp/afterCreateTest/api/models/Dog.js:18:7)
at fn (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:60:10)
at /home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:181:20
at iterate (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:262:13)
at Object.async.forEachOfSeries.async.eachOfSeries (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:281:9)
at Object.async.forEachSeries.async.eachSeries (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:214:22)
at Object.runner.afterCreate (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:63:9)
at after (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/dql/create.js:243:17)
at /home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/dql/create.js:230:68
at wrapper (/home/user/.npm-packages/lib/node_modules/sails/node_modules/lodash/index.js:3592:19)
at applyInOriginalCtx (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/normalize.js:421:80)
at wrappedCallback (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/normalize.js:324:18)
at callback.success (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/switchback/lib/normalize.js:33:31)
at _switch (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/switchback/lib/factory.js:58:28)
at afterwards (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/adapter/dql.js:89:19)
at wrapper (/home/user/.npm-packages/lib/node_modules/sails/node_modules/lodash/index.js:3592:19)
Не уверен, что если применяется ответ на Sails.js model saved to session loses custom instance methods??
Что произойдет, если вы удалите 'afterCreate()'? – Makah
Вопрос в том, что передается afterCreate(). В 'dog' в afterCreate() отсутствуют его методы экземпляра, любая Собака, возвращенная Dog.find(), однако имеет все методы экземпляра, как ожидалось. – danba