Mungo-aggregation-Abfrage nicht im Scherz/Mockgoose test, anderswo auch funktioniert

Ich versuche zu schaffen, einige tests für meine Mongoose-Modelle, und ich kann nicht herausfinden, wie man den Scherz/Mockgoose test zu bestehen für eine Kurzschrift-Abfrage - /aggregation-pipeline (siehe unten im ersten code-block), die ich erstellt, um rufen Sie einen beliebigen Dokument aus einer Sammlung, die nicht auf die in einer anderen Sammlung.

activitySchema.query.getUnused = function() {
    return Activity.aggregate()
        .lookup({
            from: 'userActivity',
            localField: '_id',
            foreignField: 'activity',
            as: 'matched_docs',
        })
        .match({ matched_docs: { $eq: [] } })
        .sample(1)
        .project({ matched_docs: 0, __v: 0 })
        .exec()
}

Jest test

describe('Activity methods', () => {
    test('Activity unused query executes', (done) => {
        function createActivity() {
            return Activity
                .create({ activity: 'running' })
                .then(activity => {
                    console.log('Activity is generated')
                    return Promise.resolve(true)
                })
        }
        async function retrieveActivity() {
            await createActivity()
            Activity
                .find()
                .getUnused()
                .then(unused => {
                    console.log(unused);
                    expect(unused).toHaveLength(1)
                    done()
                })
                .catch(x => {
                console.log(x)
                })
        }


        return retrieveActivity()
    })

})

Sandbox Node JS code:

Activity.find().getUnused()
    .then((x) => {
     console.log(x);
})

Wenn ich versuche, es in einer sandbox-Knoten Datei, Witz, funktioniert normal, und ruft einen typischen queryset wie:

   [ { _id: 58f3dee3b0346910a69e6e5d, activity: 'running', __v: 0 } ]

Wenn ich den test, bekomme ich diese MongoError:

The 'cursor' option is required, except for aggregation explain

Wie behebe ich dieses Problem mit einem universellen Art und Weise, die funktioniert in beiden Kontexten? Ich würde gerne zu der Methode zurückzukehren ein Versprechen, wenn möglich. Ich habe versucht, sowohl die verketteten aggregate-Methode (siehe oben) und die native Mongo Aggregat array für die Rohrleitungen, aber beide Fehler zurück. Meine mongo-version ist 3.4.2 falls das relevant ist.

InformationsquelleAutor litel | 2017-04-16
Schreibe einen Kommentar