2016-07-26 2 views
2

Я использую SailsJS (v0.12.3), и я хочу создать пользователя до создания его профиля. Моя проблема заключается в том, что Пользователь создан успешно, но UserProfile этого не сделал.SailsJS: невозможно создать модель в beforeCreate

Это моя UserProfile модель:

beforeCreate: function (userProfile, cb) { 
    // Creating user login 
    console.log("Creating user login: ", userProfile); 
    User.create({ 
     username: "abc", 
     password: "1234567890" 
    }).then(function (user) { 
     console.log("Creating user done: ", user) 
     userProfile.appUser = user.id; 
     userProfile.code = user.username; 
     cb(null, userProfile); 
    }).catch(function (err) { 
     console.log("ABC", err); 
     cb(err); 
    }); 
} 

Выход консоли:

Creating user login: { firstName: 'Vu', 
    lastName: 'Bao', 
    gender: 1, 
    phoneNumber: '0987654321', 
    id: '29b1b37b-ca95-4fd0-8cf8-e35a25af4616', 
    code: '1469529082587', 
    isVerified: false, 
    totalVisit: 0 } 

Я могу видеть сообщение Creating user login ... печатается, но я не могу увидеть журнальное сообщение Creating user done ... и ABC ошибку.

Результат: в базе данных я получил user, но userProfile не сделал.

Как создать модель пользователя до того, как пользовательский файл будет создан правильно?

Спасибо!

ответ

3

Через некоторое время прочитайте о действиях модели Lifecycle callbacks. Я нахожу, что мой код не вызывал функцию afterCreate, которую я определил в модели User. Итак, я удаляю функцию afterCreate, тогда она работает.

// ./api/models/User.js 
afterCreate: function (user, cb) { 
    // i commented a lots in this function, but did not callback cb 
    // then i remove this method because I did not need it anymore 
    // ... 
} 

Благодарим за чтение. Надеюсь, это поможет другим!

+1

Убедитесь, что вы перезвоните, если используете обратные вызовы жизненного цикла. – Vunb

+1

Не могли бы вы написать пример кода, пожалуйста? –

+0

Я обновил свой ответ с помощью примера кода :) – Vunb

Смежные вопросы