.sort()根本不工作(猫鼬)

时间:2018-05-12 19:58:51

标签: javascript node.js mongodb express mongoose

.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
      })
    });
});

我也试过了:

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

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

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

.sort({ date: 1 })

并尝试asc / desc而不是1 / -1

知道为什么.sort()无法正常工作?

1 个答案:

答案 0 :(得分:4)

参见Mongoose Docs:

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

  

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

因此,为了建立上述承诺执行,请看下面的示例代码:

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
        })
    });
});