2016-07-03 8 views
5
schematu

użytkownika:Prevent zduplikowane wpisy w tablicy w schemacie Mongoose

var UserSchema = new Schema({ 

name:   { type: String, required:true }, 
email:   { type: String, required:true, lowercase: true , index : { unique: true } }, 
password :  { type: String, required:true , select:true }, 
blog_bookmarks: [{ type: String }] 

}); 

API do dodawania wartości do blog_bookmarks dla konkretnego użytkownika

api.post('/add_bookmark_blog', function(req, res){ 

User.findOne({_id: req.query.user_id}, function(err, user){ 
    if(err) 
    { 
     res.json(err) 
    } 
    else{ 
     var blogid = req.body.blog_id; 
     user.find({ blog_bookmarks : blogid}, function(res1, result){ 
      if(res1){ 
       user.blog_bookmarks.push(blogid); 
       user.save(function(err) { 
        if(err){ 
          res.json('ERROR at adding bookmark') 
         } 
        else { 
          res.json('bookmark for blog added') 
         } 
       }) 
      } 
      else{ 
       res.json('Already bookmarked') 
      } 
     }); 
    } 
    }) 
}); 

chcę dodać blog_id do blog_bookmarks tablica tylko wtedy, gdy nie robi istnieje, nie chcę wielu wpisów.

Obecnie user.find() daje Konsola błędów

user.find() nie jest funkcją

Jak to osiągnąć?

Odpowiedz

5

Aby uniknąć powielania wartości w urządzeniu blog_bookmarks, należy użyć operatora $addToSet.

User.update({_id: req.query.user_id}, {$addToSet: {blog_bookmarks: blogid}}) 

Twój user.find() daje prawdopodobnie błąd bo powinno być User.find() z kapitałem U na początku.

+1

dzięki. zadziałało – kRAk3N