如何排序导致nodejs - mongodb搜索,但是,通过调用动态方法

lar*_*ron 6 javascript mongodb node.js express

我正在通过mongo native连接器在连接到mongodb的nodejs中开发一个Web应用程序.

在我的一个js文件中,我有一个通用方法来调用"find"或"findOne"操作来从mongodb集合中检索我需要的任何内容,如下所示:

这对我来说可以.

但是现在,我需要对结果进行排序,据我所知,Mongodb使用"排序"方法来实现这一目标.

collection.ensureIndex(indexedFields, function(error, indexName) {
    if (error) {
        callback(error);
    } else {
        var operation = (params.options.one) ? collection.findOne : collection.find;

        operation.call(collection, params.selector, params.fields, params.options,
            function(error, result){
                if (error) {
                    ...
                } else {
                    ... 
                }       
            }
        );
    }
});
Run Code Online (Sandbox Code Playgroud)

在一个简单的查询中,这应该是这样的:例如:

collection.find().sort({field : 1}),
Run Code Online (Sandbox Code Playgroud)

我不知道如何调用"排序"方法,这是我的通用方式.

有任何想法吗?

谢谢.

Ale*_*Roe 6

你看过mongojs(https://github.com/gett/mongojs)吗?我将它用于我的节点应用程序,它运行良好(我也使用expressjs).您可以使用以下语法进行简单的查找和排序:

db.test.find().sort({name:1}, function(error, tuples) { console.log(tuples) });
Run Code Online (Sandbox Code Playgroud)


lar*_*ron 0

我找到了解决方案。

似乎缺少“toArray”,否则不起作用。

operation.call(collection, params.selector, params.fields, params.options, function(error, result)   {
if (error) {
    callback(error);
} else {
        result.sort(params.sort).toArray(function(error, items) {
            ... 
        }
}
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助