Für dieses Projekt MEAN Stapel, ich möchte mit der gleichen Sammlung von Dokumenten speichern:synchron speichern (nicht duplizieren) Informationen in einem asynchronen Prozess
- verschiedene Arten
- eindeutige laufende Nummer pro Typ.
Beispiel:
{ID: 1, Typ: 'a', chrono: 1}
{ID: 2, Typ: 'b', chrono: 1}
{ID: 3, Typ: 'b', chrono: 2}
{ID: 4, Typ: 'a', chrono: 2}
{ID: 5, Typ: 'b', chrono : 3}
...
Am vorderen Ende, verwende ich eine Schleife
for (var i++; i < type.length; i++) // lets say Document type = ["a", "b"]
for (var j++; j< 100; j++) // Creates 100 documents
// Front end service request directing to the NodeJS Server to create a document
serverDocument.createDocument(dataS).success(function(dataR){
counterDOC++;
$scope.documentID= dataR._id;
}
Der NodeJS Server ist für die letzte Chrono Nummer in der DB für den ausgewählten Typen des Dokuments suchen und hinzufügen 1.
doc = new db.Document (req.body); // req.body is for example {type: 'a'}
doc.save();
getChrono (doc); // home made function
Die Chrono-Funktion erhalten:
var getChrono = function(doc){
var config=
{
type : doc.type,
}
query = db.Document.findOne(config).sort({$natural:-1});
query.exec(function (err, chrn){
doc.chrono = 1;
if (chrn != null)
if(chrn.chrono != null)
doc.chrono= chrn.chrono+1;
doc.update();
});
Und das Ergebnis ist etwas ähnlich wie:
{ID: 1, Typ: 'a', chrono: 1}
{ID: 2, Typ: 'a', chrono: 1}
{ID: 3, Typ: 'a', chrono: 1}
{ID: 4, Typ: 'a', chrono: 1}
{ID: 5, Typ: 'a', chrono: 2} ... Natürlich ist die Objekt-ID eindeutig, aber die chronologischen Zahlen sind für einen Dokumenttyp nicht eindeutig.
Ich verstehe, dass die Informationen noch nicht in DB gespeichert sind, wenn die nächste Anfrage gestartet wird. Daher ist die 'letzte Chrono-Nummer' in der DB nicht die letzte Chrono-Nummer in der Realität.
Kann jemand eine Methode, um dieses Problem zu lösen? ich will keine Synchronlösung auf der Vorderseite Ende und es wäre logisch, die Server-Seite haben CHRONO Anzahl
Sie eine Warteschlange benötigen Ihre Artikel in einem Sync-Art und Weise zu verarbeiten. – Dieterg
Hallo Dieterg, ich möchte es nicht auf der Frontendseite machen, weil das Problem, 2 User zu bekommen, die die gleiche Operation machen, zu einem Bug führen könnte. Und ich habe keine Ahnung, wie ich es auf der Serverseite machen kann Ich vermisse eine Funktion? – Alex
Sie können diese Funktionalität auch auf dem Server hinzufügen. : - – Dieterg