.sort() 根本不起作用(猫鼬)

sky*_*ake 2 javascript mongoose mongodb node.js express

.sort()功能似乎对我根本不起作用,它不会对我所做的任何事情进行排序。

我通过 Handlebars {{Book}} 显示输出

router.get("/", (req, res) => {
  Book.find({ _id: req.params.id })

    .sort({ 'chapters.orderIndex': 1 }) //wont sort 

    .then(books => {
      res.render("books/index", {
        books: books
      })
    });
});
Run Code Online (Sandbox Code Playgroud)

我也试过:

.sort({ 'Book.chapters.orderIndex': 1 }) 

.sort({ 'Book.date': 1 })

.sort({ 'date': 1 }) //field from Book

.sort({ date: 1 })
Run Code Online (Sandbox Code Playgroud)

也尝试过asc/desc而不是使用1/-1

知道为什么.sort()不起作用吗?

Ome*_*lan 5

请参阅猫鼬文档:

http://mongoosejs.com/docs/promises.html#queries-are-not-promises

Mongoose 查询不是承诺。为了方便起见,它们有一个用于 co 和 async/await 的 .then() 函数。如果您需要一个成熟的承诺,请使用 .exec() 函数。

所以为了建立上面提到的promise执行,请看下面的示例代码:

router.get("/", (req, res) => {

    let query = Book.find({ _id: req.params.id })
    .sort({ 'chapters.orderIndex': 1 });

    let promise = query.exec();

    promise.then(books => {
        res.render("books/index", {
            books: books
        })
    });
});
Run Code Online (Sandbox Code Playgroud)