2017-11-17 1 views
0

Gibt es eine Methode in mongodb oder Mungo, so kann ich bedingte Abfrage erstellen Wiederholungen zu vermeiden Wie kann ich diese unter bestimmten Code umgehen, wenn „User“ mit dem gleichen Namen in Sammlung ohne Middleware Da springt Middleware direkt das Ausfüllen von Formularen Seite **Wie erstelle ich Zustand in Form von Abfragemethode zu aktualisieren, um Doppelarbeit zu vermeiden

router.get('/page/:id/:username'/foo, 
    function(req,res){ 

    //How can I bypass this below given code if "User" with same name 
    //present in collection without using middleware 
    //Since,middleware directly skips the form filling page 

    User.findOneAndUpdate({username:req.user.username}, 
    { 
     $addToSet:{ 
      "messages":{ 
      User:req.params.username, 
      id:req.params.id 
      } 
     } 
    }, 
    function(err,user) { 
     if (err) { 
     throw err; 
     } else { 
     res.render("Form"); 
    })    
    }) 

     //I have to skip the first User.findOneAndUpdate method if it is 
     //already present 

    router.post('/page/:id/:username'/foo/post, 
    function(req,res){ 


     User.findOneAndUpdate({username:req.user.username, 
      "messages.User":req.pa 
      rams.username}, 
     { 
      $push:{ 
        "messages.$.texts":{ 
           message:req.body.message, 
           username:req.user.username 
          } 

       } 
     },function(err,user){ 
      if (err) { 
       throw err; 
      } else { 
       res.render("Form",{user:user}); 
      } 
     }) 
    }) 


    //this is what my model look-like 

     messages:[{ 
        id:{ 
        type : mongoose.Schema.Types.ObjectId, 
        ref : "User" 
        }, 

        texts:[{ 
         username:String, 
         message:String 
        }], 
        User:String 
      }], 

gibt es eine Bedingung, die ich in Form von Abfrage in Mungo setzen kann?

Antwort

0

** I, habe es .some mit getan() Syntax, ich hoffe, dass diese Lösung hilft anderen Neulingen wie mir ** `

` 
router.post('/profile/chat/:username/:id/send',isLoggedIn, 
function(req,res){ 

    User.findById(req.user._id,function(err,primaryUser){ 
    if (err) { 
     console.log(err); 
} else { 


    if (primaryUser.messages.some((message) => message.id.toString() 
    === req.params.id.toString())) { 


User.findOneAndUpdate({username:req.user.username, 
"messages.id":req.params.id}, 
{$push: 
{"messages.$.texts": 

{ 
message:req.body.message, 
username:req.user.username 
} 

} 
},function(err,user){ 
if (err) { 
console.log(err); 
} else { 

User.findOneAndUpdate({username:req.params.username, 
"messages.id":req.user.id}, 
{$push: 
{"messages.$.texts": 

{ 
message:req.body.message, 
username:req.user.username 
} 

} 
},function(err,user){ 
if (err) { 
throw err; 
} else { 

console.log("Debugg Point 3"); 

} 
}) 
console.log("Debugg Point 4"); 
res.redirect("back"); 
} 
}) 


} else { 




    var primarySpace = { 
    id:req.params.id, 
    User:req.params.username 
    } 

    primaryUser.messages.push(primarySpace); 
    primaryUser.save(); 


    User.findById(req.params.id,function(err,secondaryUser){ 
    if (err) { 
     console.log(err); 
    } else { 

    var secondarySpace = { 
    id:req.user._id, 
    User:req.user.username 
    } 

    secondaryUser.messages.push(secondarySpace); 
    secondaryUser.save(); 


User.findOneAndUpdate({username:req.user.username, 
"messages.id":req.params.id}, 
{$push: 
{"messages.$.texts": 

{ 
message:req.body.message, 
username:req.user.username 
} 

} 
    },function(err,user){ 
if (err) { 
throw err; 
} else { 

User.findOneAndUpdate({username:req.params.username, 
    "messages.id":req.user.id}, 
    {$push: 
    {"messages.$.texts": 

    { 
message:req.body.message, 
username:req.user.username 
    } 

} 
},function(err,user){ 
if (err) { 
throw err; 
} else { 

console.log("Debugg Point 1"); 

} 
}) 
console.log("Debugg Point 2"); 
res.redirect("back"); 
} 
}) 
    } 
    })  
    }  
    } 
    }) 

}) 
Verwandte Themen