fhlkm
fhlkm

Reputation: 343

What do the find() and sort()mean in Mongoose?

I am new to mongoose, so there are something I don't quite understand.

The code like the below:

The question is

1 I can't find have two parameters here(it is like find({})), why in this code find have two parameters?

2what does "sort(order+sort)" mean ? I am confused.

    var sort = req.query.sort || "created";
    var order = (req.query.order === "asc" ? "-" : "");
    var limit = req.query.limit || "20";
    var offset = req.query.offset || "0";

    Opportunities.find(filterObject, '-email')
            .sort(order + sort)
            .skip(offset)
            .limit(limit)
            .populate('tags')
            .populate('location')
            .exec(function (err, opportunities) {
                if (err) return handleError(res, err);
                return res.json(200, opportunities);
            });

Upvotes: 1

Views: 1300

Answers (1)

apsillers
apsillers

Reputation: 115950

The second argument to find is the projection of result objects. That is, it is a list of fields you want to include or exclude in each result object found by the query. If you use field names prefaced by minus signs (-foo), then you are signifying that you want all fields except that listed fields. So, the argument -email means, "When showing me results, exclude the email field, but include all other fields".

The sort function can also use field names with or without a minus sign, indicating whether the results should be sorted descending or ascending:

The sort order of each path is ascending unless the path name is prefixed with - which will be treated as descending.

The order variable is either the one-character string - or the empty string, based on the desired direction of the sort. This gets prepended to the field name used to sort the results (i.e., the sort variable).

Upvotes: 2

Related Questions