2016-07-03 14 views
5
schema

utente:Prevenire le voci duplicate in matrice in schema 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 per aggiungere i valori per blog_bookmarks per un particolare utente

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') 
      } 
     }); 
    } 
    }) 
}); 

voglio aggiungere blog_id-blog_bookmarks serie solo se doesn esiste, non voglio più voci.

Attualmente, user.find() dà l'errore console

User.find() non è una funzione

come raggiungerlo?

risposta

5

Per evitare valori duplicati nello blog_bookmarks, utilizzare l'operatore $addToSet.

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

tuo user.find() ti dà probabilmente un errore perché dovrebbe essere User.find() con un capitale U all'inizio.

+1

grazie. ha funzionato – kRAk3N