2015-10-16 3 views
1

Решение о создании базы данных в базе данных здесь, и нет другого способа сделать это, но опросить экспертов по SO.опасность использования свойства id для моделей Mongoose?

Мы используем Mongoose ODM с Node.js Express. MongoDB использует _id как свойство по умолчанию для моделей, которые содержат ObjectID, уникальные для каждого документа.

Мы используем автоинкремент, который дает целые идентификаторы каждой модели. Мы хотим назвать это поле «id», которое будет дополнять поле «_id».

Я обеспокоен тем, что существует небольшой риск того, что использование поля «id» вызовет проблемы. Кто-нибудь имеет положительный или отрицательный опыт использования «id» для целых идентификаторов на всех своих моделях Mongoose?

+1

Я также использовал автоинкремент для мангуста. Как правило, мы просто становимся конкретными и предоставляем им собственное дополнительное поле id, например. 'Article' имеет' articleId: Number' – cdbajorin

ответ

1

Да, будьте очень осторожны. По умолчанию Mongoose добавляет к вашей модели виртуальное свойство под названием "id". Это виртуальное свойство возвращает приведение в String свойства _id.

Если вы действительно хотите добавить реальное свойство "id" к модели вашего необходимо отключить эту автоматическую виртуальную с помощью опции: {id: false} в ваших new Schema() звонков:

new Schema({name: String, id: int}, {id: false}) 

Имейте в виду, что даже если это возможно, вы будете путайте каждого разработчика, который знает мангуста, когда он читает ваш код, делая это.

Возможно, лучше позвонить по-другому.

Если вы создаете этот инкрементный идентификатор в любом случае, как ваш первичный ключ, возможно, вы можете напрямую его назначить _id, потому что тогда, вероятно, нет необходимости создавать дополнительный ObjectId ... и свойство id автоматически вернет ваше целое число как строка.

+0

спасибо за это, моя кишка сказала, что это плохая идея –

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