我正在将一个子域名字符串写入Mongodb数据库(在Compose.io上运行),我需要确保subdomain.name字符串是唯一的。
我将文档设置为
var SubdomainModel = function() {
var subdomainSchema = mongoose.Schema({
name: {type: String, require: true, index: true, unique: true, lowercase: true, trim: true},
createdBy: {type: mongoose.Schema.Types.ObjectId, require: true, ref: 'User'}
});
subdomainSchema.pre('save', function(next) {
var subdomain = this;
subdomain.name = subdomain.name.toLowerCase();
next();
});
return mongoose.model('Subdomain', subdomainSchema);
}
module.exports = new SubdomainModel();
我使用frisby.js来运行我的测试(它基于茉莉花)。在我的测试中,我删除子域文档,然后创建新的子域。 我还为子域名添加时间戳,以便确保它是唯一的。我创建子域,然后等待15秒再次创建它并确保我的第二次创建调用失败。
测试通过一次,然后我重新运行,然后下一次失败。当我查看数据库时,确实有相同子域的两个条目。
{ name: "test-1425876399170", _id: ObjectId("54fd25af5ce2db7c0a7192d1"), __v: 0 }
{ name: "test-1425876399170", _id: ObjectId("54fd25be5ce2db7c0a7192d3"), __v: 0 }
也许这个问题是由于数据库被吹走造成的,我不确定,但我对它的失败/通过/失败/通过的持续性感到惊讶。
知道如何解决这个问题吗?