【问题标题】:Mongoose create document if doesn't exist如果不存在,Mongoose 创建文档
【发布时间】:2017-03-13 19:02:11
【问题描述】:

我正在制作一个简单的网址缩短器(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

怎么做?

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

这很容易实现,这个示例应该有助于理解

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

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 2018-09-13
    • 2021-03-21
    • 2021-10-25
    • 2019-02-16
    • 2016-01-23
    • 2013-03-02
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多