【问题标题】:.sort() not working at all (mongoose) [duplicate].sort() 根本不工作(猫鼬)[重复]
【发布时间】:2018-05-12 19:58:50
【问题描述】:

.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() 不起作用吗?

【问题讨论】:

  • 你的猫鼬版本是什么?我认为你使用了错误的语法

标签: javascript node.js mongodb express mongoose


【解决方案1】:

查看 Mongoose 文档:

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

【讨论】:

  • 非常感谢,我一直在寻找解决方案,但从未遇到过。
  • 非常感谢,奥马尔·古拉斯兰
猜你喜欢
  • 2018-07-24
  • 2018-07-22
  • 1970-01-01
  • 2018-05-02
  • 2017-05-26
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多