sql >> Database >  >> NoSQL >> MongoDB

Hoe een query uit te voeren met punt (. ) via Mongoose in Node.js en hoe een lege array toe te voegen

Er zijn hier een aantal problemen waar u waarschijnlijk tegenaan loopt.

Ten eerste is teams een array-eigenschap, maar u wijst er een object aan toe. Je moet zoiets als dit doen:

var user = new users({
    userID: id, //give the id of the next user in Dbase
    userName: userName, 
    userEmail: 'userEmail',
    teams:[],
    socialMedias: [{socialMediaType: socialMediaID}]
});

Ten tweede, als socialMediaType wordt doorgegeven als een functieparameter, kun je het niet gebruiken zoals je doet. Je moet zoiets als dit doen:

var socialMedias = {};
socialMedias[socialMediaType] = socialMediaID;
var user = new users({
    userID: id, //give the id of the next user in Dbase
    userName: userName, 
    userEmail: 'userEmail',
    teams:[],
    socialMedias: [socialMedias]
});

Ten derde zal je findOne niet werken zoals het is. Van wat ik hier van je intentie kan opmaken, heb je zoiets als dit nodig:

function searchUser(socialMediaID, socialMediaType){
    var user
    var query = {};
    query["socialMedias."+socialMediaType] = socialMediaID;

    users.findOne(query, function(err, userFound){

        if(err) return handleError(err);
        user = userFound; 
    });

    //what does  MongoDb return if it does not find the document?

    return user;
}

Maar ten vierde, zelfs dat zal niet werken omdat je synchroon een gebruiker retourneert van een methode die asynchrone bewerking uitvoert. Er zijn verschillende manieren om dat op te lossen, maar je kunt beginnen door je in te lezen over beloften of een callback-functie door te geven aan searchUser.




  1. HBase en Hive – Samen beter

  2. Spring data MongoDB voorbeeld werkt niet

  3. hoe Spark-submit-configuratie te gebruiken:potten, pakketten:in clustermodus?

  4. Vind waarden die geen getallen bevatten in SQL