node.js에서 mongodb로 저장할 때, 중복되지 않게 저장하는 방법이 따로 있나요?
조회수 4721회
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var schema = new Schema({
name: {type: String, required: true, unique: true},
img: {type: String, required: true},
field: {type: String, required: true},
amount: {type: String, required: true}
}, {
toJSON: {virtuals: true },
toObject: {virtuals: true}
});
var Recipe_name = mongoose.model('Recipe_name', schema);
module.exports = Recipe_name;
이렇게 mongoose 모듈을 사용해서 모델을 정의했는데,
unique: true 속성을 넣으면 디비에 저장할 때 중복 제거되서 저장되야 하는게 아닌가요?
자꾸 중복된 값이 저장되네요.... 다른 방법이 있나요?
for(var i in obj) {
(function(i) {
saveRecipeName(obj[i].name, obj[i].img, obj[i].field, obj[i].amount);
})(i);
}
function saveRecipeName(name, img, field, amount) {
var recipe_name = new Recipe_name({
name: name,
img: img,
field: field,
amount: amount
});
recipe_name.save(function(error) {
if(error) {
console.log(error);
} else {
console.log('save recipe_name: '+name);
}
});
}
저장하는 코드는 위와 같이 구현했습니다.
노드를 처음 써보는거라 좀 지저분 할 수 있어요ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
자답입니다.
function save(id, title, callback) { Value.findOneAndUpdate( {id: id, title: title}, /* query */ {id: id, title: title}, /* update */ { upsert: true}, /* create if it doesn't exist */ callback); }
이런식으로 findOneAndUpdate 를 통해 찾고
upsert: true 속성을 주게 되면 디비에 없는 경우에만 생성하게 됩니다.
참고링크 : StackOverFlow
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력