Ich frage mich, was die "Mongo Way" für die Modellierung eines ausstehenden Handels eines Artikels zwischen zwei Benutzern ist.Wie modelliere ich einen ausstehenden Trade in MongoDB?
Ich habe eine Benutzersammlung und ich habe eine Büchersammlung. In meiner App können die Nutzer einander Trades vorschlagen. Bis der Handelsvorschlag akzeptiert wird, muss der Handel als ausstehender Handel in der Datenbank gespeichert werden.
Es scheint mir, dass die beste Option, um eine ‚Gewerke‘ Eigenschaft auf jedem Buch Dokument wie folgt aus (mit Mongoose) modelliert zu haben ist:
const booksSchema = new Schema({
title: { type: String, required: true },
createdAt: { type: Date, 'default': Date.now },
updatedAt: { type: Date, 'default': Date.now },
author: { type: String, required: false},
imageUrl: { type: String, required: false},
ownerUser: { type: Schema.ObjectId, required: true },
trades: [{
fromUser: { type: Schema.ObjectId, required: true },
bookOffered: { type: Schema.ObjectId, required: true }
}]
});
Das Problem, das ich mit diesem zu sehen ist, dass es einbezieht Aktualisierung von zwei Dokumenten, wenn der Handel akzeptiert wird. Unter der Annahme, dass der Handel akzeptiert wird, muss die ownerUser
für jedes Dokument geändert werden und das trades
Array muss gelöscht werden.
Es scheint so, als würden Sie die Änderungen in einer Art "Transaktion" haben wollen, so dass, wenn jemand aus irgendeinem Grund nicht aktualisiert würde, auch der andere nicht.
Ist dies ein typischer Weg, um diese Art von Situation zu modellieren? Was ist mit dem "Transaktions" -Teil der Situation zu tun?
Also hätte jedes Buchbeispiel einen eigenen Eintrag? Sie sollten _id auch in Ihr Schema aufnehmen. –
Das ist automatisch von Mongoose enthalten, denke ich. – alwayslearning
MongoDB selbst wird eine _id für Sie auf dem Server injizieren. –