2015-04-09 2 views
4

У меня есть ниже модель с первичным ключом ID:waterlinemodel.create - PrimaryKey

attributes: { 
    id: { 
     type: 'integer', 
     autoIncrement: true, 
     primaryKey: true, 
     unique: true 
    }, 
    name: { 
     type: 'string', 
     unique: true, 
     required: true 
    }, 
} 

Я создаю модели, как показано ниже:

var model = { 
    id: undefined, 
    name: 'name', 
}; 

waterlinemodel.create (модель) .exec (функция (ошибка, результат) {});

Но он бросает под ошибкой: Error (E_UNKNOWN) непредвиденная ошибка] Подробности: ошибка: нулевое значение в колонке "ID" нарушающий не-нулевое ограничение

As, 'идентификатор' является первичный ключ, ватерлайн не должен смотреть на то, что является значением свойства id.

Как устранить эту ошибку? Я не хочу удалять «id», потому что я создал объект value для модели и содержит все атрибуты model.I меня настраивает свойство объекта значения по мере необходимости. Мне не нужно устанавливать свойство id для создания.

+0

Если вам не нужно устанавливать свойство id или нет причины, по которой вы хотите назначить свой собственный идентификатор первичного ключа, зачем вы это делаете? Первичный ключ будет назначаться автоматически, если явно не сказано, чтобы этого не делать. Удаление «id: undefined», вероятно, просто сработает. – bastijn

+0

Согласно сценарию java. Если я не определяю id или i, присваиваю значение как undefine, оба они одинаковы. Тем не менее ватерлиния дает ошибку. – Nitul

+0

С autoPK = true? В соответствии с вашим ответом ниже autoPK является ложным, и, таким образом, вам нужно будет указать действительный идентификатор. Если вы установите autoPK в true, вам не нужно будет определять его (вы можете опустить свойство id). – bastijn

ответ

0

В документации сказано:

Will set the primary key of the record. This should be used when autoPK is set to false. 

attributes: { 
    uuid: { 
    type: 'string', 
    primaryKey: true, 
    required: true 
    } 
} 

Вы должны установить autoPK : false на вашей модели.

Ссылка на документ: https://github.com/balderdashy/waterline-docs/blob/master/models.md#primarykey

+0

Читая вопрос и судя по его качеству, я думаю, что он не намерен устанавливать свой первичный ключ. Из того, что я прочитал, он должен сохранить autoPK равным true и просто удалить id: undefined, чтобы система генерировала свой первичный ключ. – bastijn

+0

Поэтому он должен удалить primaryKey: true тоже – jaumard

+1

autoPK уже false. – Nitul

1

Я имею точно такую ​​же проблему, особенно с моделью, сконфигурированной для использования PostgreSQL. С его установкой на диск или память ресурс создается, но с postgresql ресурс не создается с ошибкой с отсутствием нуля.

Идентификатор не устанавливается независимо от того, установлен ли я autoPK: true или нет. Даже установка атрибута id в модели с autoPK:false не работает.