Mongoose如果不存在则创建文档

时间:2016-10-31 16:35:31

标签: node.js mongodb mongoose

我正在制作一个简单的网址缩短程序(Mong db,Node js)。 这是我的模特:

var urlSchema = new mongoose.Schema({
    shortUrl: String,
    longUrl: String,
    created: {
        type: Date, default: Date.now
    },
    clicks: {
        type: Number, default: 0
    }
});

我有一个函数getRandomString6(),它返回6个随机字符串。

var string = getRandomString6();

我想实现这个"伪代码"算法:

1 var string = getRandomString6();
2 if there is document with shortUrl == string
3       go to step 1
4 else
5       create new document with shortUrl=string

怎么做?

1 个答案:

答案 0 :(得分:0)

这很容易实现,这个示例应该有助于获得想法

function getValidShortUrl(cb) {
    var str = getRandomString6();
    MODEL.findOne({
        shortUrl: str
    }, function(err, doc) {
        if(err) return cb(err);
        else if (doc) return getValidShortUrl(cb);
        else cb(null, str);
    });
}

getValidShortUrl(function(err, shortUrl) {
    if(err) {
        // error
    } else {
        // shortUrl is valid url that doesn't exist in schema
    }
});