コレクション全体で一意のプロパティを持つドキュメントを保存しようとしています。
したがって、誰かが {name: 'kitty'} で子猫を保存しようとして、その名前が既に存在する場合、その名前は失敗し、{name: 'kitty1'} (次に 'kitty2' など) で再試行します。
これを行う良い方法が本当にわかりません。アイデアはありますか?
これが私がこれまでに持っているものです(動作しません)。
var kittenSchema = new Schema ({
name: {type: String, index: {unique: true}}
})
var Kitten = mongoose.model('Kitten', kittenSchema);
var kitten = new Kitten({
name: 'kitty'
});
kitten.save(function(err, kitten){
if (err){
saveKitten(kitten, 1, function(err, kitten){
if (err){
console.log("Damn, no kitten");
} else {
console.log("New kitten " + kitten.name + "saved.");
});
} else {
console.log("New kitten " + kitten.name + "saved.");
}
}));
function saveKitten(kitten, count, callback){
kitten.name = kitten.name + count;
kitten.save(function(err, newKitten){
if (err){
if (count > 100){
// Give up!
callback(err, null);
}
saveKitten(kitten, count + 1, callback);
} else {
callback(null, newKitten);
}
}));
}