猫鼬 - > findOne - >排序 - >如果DB中没有记录

时间:2016-11-25 14:31:15

标签: javascript node.js mongodb mongoose

我在nodeJS中遇到了中间件方法的问题。 在这个方法中,我正在寻找一个具有最高自定义ID属性的专辑,在排序并获得最高值之后,我做了一个增量++。

一切正常,但是当DB中没有记录时,问题就会进入阶段。

我想要做的是在没有记录时制作默认的album.id = 1

我的代码:

// ID MIDDLEWARE
newID.use(function (req, res, next) {
    var _newAlbumID;
    Album.findOne().sort('-id').exec(function (err, album, newID) {
        if (err) throw err;
        else {
            var test = ++album.id;
            _newAlbumID = test;
            console.log("IN: ", test, _newAlbumID);
            req.body.id = _newAlbumID;
            next();
        }
    });
});

感谢您的帮助和提示。

2 个答案:

答案 0 :(得分:1)

只需测试album非空。

Album.findOne().sort('-id').exec(function (err, album, newID) {
    if (err) throw err;
    else if (!album) {
        ...
        ...
        }
    else {
        var test = ++album.id;
        _newAlbumID = test;
        console.log("IN: ", test, _newAlbumID);
        req.body.id = _newAlbumID;
        next();
    }

答案 1 :(得分:0)

这是好事。我用以下方式做到了:

else if (!album) {
            _newAlbumID = 1;
            req.body.id = _newAlbumID;
            console.log("NO ALBUM");
            next();
        }

当查询中没有任何相册时,我无法指定album.id = 1。)