Я учусь Node/Mongoose, и пытаюсь выяснить, как предотвратить дубликаты в массиве ListItems:Предотвращение дубликатов в массиве объектов
var listitemSchema = new mongoose.Schema({
name: String,
rank: Number
});
... которые существуют внутри пользователя:
var userSchema = new mongoose.Schema({
username: String,
password: String,
list: [{
type: mongoose.Schema.Types.ObjectId,
ref: "ListItem"
}]
});
... исходя из того, имеет ли пользователь уже имя в своем списке. Я искал $addtoset
, но не могу понять, как установить условия при работе с объектом. docs не очень помогли, и я не могу найти похожие примеры в Интернете. Сейчас мой запрос «POST» беспорядок и выглядит следующим образом:
router.post("/editlist", isLoggedIn, function(req,res){
User.findById(req.user._id).populate("list").exec(function(err , user) {
if(err) {
console.log(err);
res.redirect("/editlist");
} else {
//prevent duplicates based on username
User.update(
{ "_id": req.user._id },
{ $addToSet: { "streamName": req.body.listitem.name}
});
res.redirect("/watch");
}
});
});
Может кто-нибудь прислать мне на моем пути? Мой $addToSet
не нажимает элементы на массив list
.
Почему вы толкая на 'streamName' поле вместо «списка»? – JohnnyHK
да, это было мое плохое, получив еще одну ошибку, хотя – CXNAJ