2017-02-20 5 views
0

Я пытаюсь создать уведомление для пользователя.получить запись `id` перед созданием/сохранением | Sails Js

с указанием URL-адреса в описании http://localhost:1337/invited/accept?referrer=msgIcon&id=this-notification-id url имеет идентификатор этого недавно созданного уведомления.

AppUserNotification.create({ 
    projectId: projectId, 
    appuser: appusers.id, 
    notificationTitle: 'You are invited in project', 
    isRead: 0, 
    description: 'You are invited in project collaboration, ' 
    + 'please accept invitation by following the link.\nHave a good day !\n' 
    + 'Accept Invitation http://localhost:1337/invited/accept?referrer=msgIcon&id=this-notification-id', 
    }).exec(function (err, appuserNotifications) { 
    apiStatus = 1; // heading toward success 
    if (err){ 
     return false; 
    }else if(appuserNotifications){ 
     return true; 
    } 
    });//</after AppUserNotification.create()> 

Что я хочу сделать, это сохранить ссылку в описании с помощью этого недавно созданного уведомления. но не смог этого сделать. , пожалуйста, помогите мне.

+1

Вы не можете сделать это. Идентификатор поступает из базы данных, поэтому он доступен только в обратном вызове. Вы можете обновить его сразу после создания. '' 'appuserNotifications.description = 'ваш desc с id'; appuserNotifications.save() '' ' – Bonanza

ответ

1

От По умолчанию, id создается базой данных во время создания записи. Таким образом, доступ можно получить только после создания.

Вот несколько способов, в которых ваша цель может быть достигнута:

  1. Новый атрибут: Добавить еще один уникальный атрибут, который используется в описании URL. Это может быть сгенерированы случайным образом до создания (например, можно использовать UUID)
  2. Использовать пользовательский идентификатор: Set autoPK: false в модели, генерировать id себя; (Я сделал это для MySQL в beforeCreate крючком с использованием UUID в качестве первичного ключа id, не уверен, MongoDB)
  3. Update после создания: Используйте afterCreate крюк, чтобы обновить описание с id методом
  4. новой модели: Определите метод говорит getDescription() в модели, которая возвращает что-то вроде this.description + this.id.
  5. Override toJSON(): http://sailsjs.com/documentation/reference/waterline-orm/records/to-json
+0

это полезно, но в качестве примера можно найти описание get ID для создания –