使用 mlab 的 ExpressJS 网络应用;数据库排序问题

ExpressJS web app using mlab; database sorting issues

我用 mlab 数据库在 heroku 上托管了 mongoose 构建了一个 nodeJS 网络应用程序,它是一个书籍博客。一切正常,但我刚输入了第 11 本书,在索引视图中,它曾经按添加日期排序,最近的排在最前面,但这第 11 本书只是将自己嵌套在索引 3 处。有人可以先解释一下吗? (nodejs、猫鼬、heroku、mlab)然后如何确保它不会在未来发生? 型号:

var mongoose = require('mongoose');


var bookSchema = new mongoose.Schema({
    title: String,
    author: String,
    image: String,
    yearPublish: String,
    review: String,
    created: { type: Date, default: Date.now },
    score: {type:Number, max:10, min:0}
});

var Book = mongoose.model('Book', bookSchema);
module.exports = Book;

路线:

var express = require('express'),
    router = express.Router(),
    Book = require('../models/book'),
    User = require('../models/user');


    /// RESTFUL ROUTES ///

// INDEX route
router.get('/books', function(req,res){
    //passing reviewers in index.ejs

    Book.find({}, function(err, books){
        if(err){
            console.log('error loading from DB...')
        }
        else{
            res.render('books/index', {books:books});
        }
    });

});
// NEW route
router.get('/books/new',isloggedIn, function(req,res){
    res.render('books/new');
});
//CREATE route
router.post('/books', isloggedIn, function(req,res){
    Book.create(req.body.book, function(err, newBook){
        if(err){
            console.log('error creating new book review');
            console.log(err);
        }
        else{
            res.redirect('/books');
        }
    });
});
//SHOW route
router.get('/books/:id', function(req,res){

    Book.findById(req.params.id, function(err, theBook){
        if(err){
            res.redirect('/books')
        }
        else{
            res.render('books/show', {book:theBook});
        }
    });

});
//EDIT route
router.get('/books/:id/edit',isloggedIn, function(req,res){
    Book.findById(req.params.id, function(err, foundBook){
        if(err){
            res.redirect('/');
        }
        else{
            res.render('books/edit', {book: foundBook});
        }
    });
});
//UPDATE route
router.put('/books/:id',isloggedIn, function(req,res){
    Book.findByIdAndUpdate(req.params.id, req.body.book ,function(err, foundBook){
        if(err){
            console.log(err);
        }
        else{
            res.redirect('/books/' + req.params.id);
        }
    });
});
// DELETE route
router.delete('/books/:id',isloggedIn, function(req,res){

        Book.findByIdAndRemove(req.params.id, function(err, foundBook){
            if(err){
                console.log('could not delete from DB...')
                res.redirect('/')
            }
            else{
                res.redirect('/');
            }
        });
});

function isloggedIn(req,res,next){
    if(req.isAuthenticated()){
        if(req.user.username == 'jc.taillandier'){
            return next();
        }
        else{
            res.redirect('/books')
        }
    }
    else{
        res.redirect('/books')
    }
}

module.exports = router;

在那种情况下,不要介意 mlab 如何对项目进行排序,您只需要在获取时按创建日期对它们进行排序:

Book.find().sort({created: -1}).exec(function(err, books){ etc...

希望对您有所帮助。 P.S。使用 -1 表示降序,使用 1 表示升序