Я использую mongodb представления для инкапсуляции данных в объекте передачи данных.
После первого запуска приведенного ниже кода в базе данных создается представление. Последующее выполнение моего кода приведет к ошибке: MongoError: Namespace already exists
. Я нахожу этот метод довольно неудобным.
В Google не так много информации о том, как использовать представления в mongoose. Итак, можете ли вы поделиться некоторыми из лучших практик инкапсуляции данных для клиента? Возможно, мне не следует использовать представления mongodb для этой цели. Что посоветуете?
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
first: String,
last: String,
});
const viewSchema = new mongoose.Schema({
first: String,
last: String,
});
const User = mongoose.model('User', userSchema);
(async () => {
mongoose.connect('mongodb://localhost:27017/tests');
await User.create([{first: '1', last: '2'}, {first: '1', last: '2'}]);
//creates 'UserView' view every run of the code :(
await mongoose.connection.db.createCollection('UserView', {
viewOn: 'users',
pipeline: [
{ $project: { first : 0,} }
]
});
const View = await mongoose.model('View', viewSchema, 'UserView')
console.log(await View.findOne());
mongoose.disconnect();
})();