Как автоматически создать коллекцию во время транзакции mon goose, если коллекция еще не была создана?
Мне известно об ограничении mon goose, которое ограничивает пользователя создавать (или удалять) mon goose коллекции во время сеанса открытой транзакции.
Кроме того, я смог найти 3 возможных решения, как это исправить:
1. autoCreate
вариант
2. Model.init()
метод
3. Model.createCollection()
метод
Какой использовать? Без потери индексов et c.
app.models.ts
import { model, Schema } from 'mongoose';
const UserSchema = new Schema<UserDocument>({
name: {
type: Schema.Types.String,
required: true,
}
}); // { autoCreate: true } <-- ???
export const UserModel = model<UserDocument>('User', UserSchema);
app.ts
import { startSession } from 'mongoose';
import { UserModel } from './app.models.ts';
async function createUser() {
// await UserModel.createCollection(); ??
// or
// await UserModel.init(); ??
const session = await startSession();
sesssion.startTransaction();
try {
const [user] = await UserModel.create([{ name: 'John' }], { session });
await session.commitTransaction();
return user;
} catch (error) {
await session.abortTransaction();
} finally {
session.endSession()
}
}
foo();