Ich habe Code geschrieben, um Credits von einem Benutzer auf einen anderen zu übertragen, ich habe MongoDB als Datenbank ausgewählt. Aber mir wurde gesagt, dass ich Probleme mit der Datenbank in der Funktion transferCredits habe. Ich habe gesucht, konnte aber kein Problem finden.Suche nach Datenbankproblemen
function transferCredits(from, to, amt) {
var fromAccount = db.game_accounts.findOne({"name": from},{"credits": 1});
var toAccount = db.game_accounts.findOne({"name": to},{"credits": 1});
if (fromAccount.credits < amt) {
throw new BalanceError("not enough balance to transfer credits");
}
db.game_accounts.update({name: from}, {$set: {credits: fromAccount.credits - amt}});
db.game_accounts.update({name: to}, {$set: {credits: toAccount.credits + amt}});
}
db.game_accounts.insert({name: "John", credits: 1000});
db.game_accounts.insert({name: "Jane", credits: 1000});
// John transfers credits to Jane
transferCredits("John", "Jane", 100);
Wer hat Ihnen gesagt, dass könnte spezifischer gewesen sein und einfach gesagt, "Transaktionen" sind in der Regel erforderlich, um die Konsistenz zwischen mehreren Schreiboperationen zu gewährleisten. Ihre spezifische Sprache ist jedoch typisch für die Art von vorurteilsbehaftetem Unsinn, der von den Böswilligen ausgestrahlt wird, die folgern, dass die "Datenbank" (MongoDB) einen solchen Prozess nicht durch mangelnde Unterstützung für Transaktionen bewältigen kann. Ihre "Implementierung" hat dies nicht bestanden, aber es ist sehr gut möglich, mit einer anderen Modellierung eine solche "Soll/Haben" -Ausgleichstransaktion mit MongoDB durchzuführen. Du machst es einfach anders. –