MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongos Cursor.nextObject gibt manchmal fälschlicherweise Null zurück?

Ich bin immer noch nicht sicher, was die Pause verursacht, aber es scheint, dass das der Übeltäter ist.

Während der Pause Cursor.nextObject wird mehrmals angerufen, bevor die ersten zurückkommen. Einige dieser Aufrufe geben null zurück . Die Lösung besteht darin, sicherzustellen, dass Cursor.nextObject wird nie gleichzeitig aufgerufen.

if (this.cursor && !this.cursor_exec && this.length() < this.concurrency) {
    this.cursor_exec = true;
    this.cursor.nextObject(function(err, item) {
        console.log(this.name + ': ' + (item ? item._id : null) + ' ' + (err ? err : null));
        this.cursor_exec = false;
        if (item) {
            this.push(item);
        } else {
            delete this.cursor;
        }
    }.bind(this));
}