sql >> データベース >  >> NoSQL >> MongoDB

Node.jsのMongooseを介してdot(。)を使用してクエリを実行する方法と空の配列を追加する方法

    ここには、発生する可能性のある問題がいくつかあります。

    まず、teamsは配列プロパティですが、オブジェクトを割り当てています。次のようなことをする必要があります:

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

    次に、socialMediaTypeが関数パラメーターとして渡された場合、それを使用しているように使用することはできません。次のようなことをする必要があります:

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

    第三に、findOneはそのままでは機能しません。ここで私があなたの意図を集めることができることから、あなたはこのようなものが必要です:

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

    しかし第4に、非同期操作を実行するメソッドからユーザーを同期的に返すため、それでも機能しません。これを解決するにはさまざまな方法がありますが、promiseについて読むか、コールバック関数をsearchUserに渡すことから始めることができます。




    1. MongoDb c#ドライバーは、フィールド値で配列内のアイテムを検索します

    2. Node.jsとMongooseを使用して、正の合計、負の合計の価格、合計を計算するにはどうすればよいですか?

    3. Javaでの挿入の失敗を処理するMongoDB

    4. SQLでコンマを使用して数値をフォーマットする方法