Cập nhật
Có một bài viết tốt hơn nếu điều này gây nhầm lẫn cho mọi người; kiểm tra tìm tài liệu và cách truy vấn hoạt động trong hướng dẫn sử dụng cầy mangut. Nếu bạn muốn sử dụng api trôi chảy, bạn có thể nhận được một đối tượng truy vấn bằng cách không cung cấp một cuộc gọi lại cho find()
phương thức, nếu không bạn có thể chỉ định các tham số như tôi phác thảo dưới đây.
Nguyên
Đưa ra một model
đối tượng, theo các tài liệu trên Model , đây là cách nó có thể hoạt động cho 2.4.1
:
Post.find({search-spec}, [return field array], {options}, callback)
Các search spec
đối tượng mong đợi một đối tượng, nhưng bạn có thể vượt qua null
hoặc một đối tượng trống.
Tham số thứ hai là danh sách trường dưới dạng một chuỗi các chuỗi, vì vậy bạn sẽ cung cấp ['field','field2']
hoặc null
.
Thông số thứ ba là các tùy chọn dưới dạng một đối tượng, bao gồm khả năng sắp xếp tập kết quả. Bạn sẽ sử dụng { sort: { field: direction } }
nơi field
là chuỗi fieldname test
(trong trường hợp của bạn) và direction
là một số nơi 1
tăng dần và -1
được desceding.
Tham số cuối cùng ( callback
) là hàm gọi lại nhận bộ sưu tập tài liệu được trả về bởi truy vấn.
Việc Model.find()
triển khai (tại phiên bản này) thực hiện phân bổ trượt các thuộc tính để xử lý các tham số tùy chọn (điều khiến tôi bối rối!):
Model.find = function find (conditions, fields, options, callback) {
if ('function' == typeof conditions) {
callback = conditions;
conditions = {};
fields = null;
options = null;
} else if ('function' == typeof fields) {
callback = fields;
fields = null;
options = null;
} else if ('function' == typeof options) {
callback = options;
options = null;
}
var query = new Query(conditions, options).select(fields).bind(this, 'find');
if ('undefined' === typeof callback)
return query;
this._applyNamedScope(query);
return query.find(callback);
};
HTH