2015-03-27 6 views
1

Есть ли способ предотвратить создание сущности, если он содержит атрибут, который не объявлен в api/models/YourModel?SailsJS: Предотвратить Model.create(), если у него есть необъявленные атрибуты

Например, скажем, я использовал MongoDB, и у меня есть эта User модель:

module.exports = { 
    attributes: { 
    name:{type:'string'}, 
    age:{type:'number'} 
    } 
}; 

, и я пытаюсь .create с этим кодом:

User.create({name:'Walter Jr',age:8,missingTest:'something'}).exec(function createCB(err,created){ 
    console.log('should fail'); 
}); 

Кроме того, если есть отношения/association с другой моделью, также не следует создавать сбой, если идентификатор объекта указывает на недопустимый объект?

Возможно, мне не хватает чего-то в процессе проверки, но пока поведение кажется мне немного странным, также было бы неплохо, если бы ватерлиния имела составную поддержку первичного ключа.

ответ

3

Вы можете попробовать поставить schema : true под конфиг/models.js

Doc сказать:

флаг для переключения schemaless или схемы режима в базах данных, которые поддерживают schemaless структуры данных. Если он выключен, это позволит вам хранить произвольные данные в записи. Если включено, будут сохранены только атрибуты, определенные в объекте атрибутов модели. Для адаптеров, не требующих схемы, таких как Mongo или Redis, по умолчанию используется схема: false.

http://sailsjs.org/#!/documentation/concepts/ORM/model-settings.html

+0

Звучит хорошо, но я пытался писать 'схемы: true' в' конфигурации/models.js' и он не сделал ничего, странно. –

+0

Пробовал ли вы сначала очистить базу данных и перезагрузить сервер? – jaumard

+0

Я установил 'migrate: 'drop'', попробовал перезапустить' mongod', при создании еще не было исправлено ошибки, также видно в журнале, который фактически удалил db. –