2017-04-25 3 views
2

私は2つのコレクションを持っていますuseruserMappingユーザーオブジェクトは、他の情報でusermappingコレクションにマップされています。私はそれを参照しています。ここでデータを取り込むマングースが正しく機能していませんか?

は、私が作成したスキーマです:

var userSchema = new userSchema({ 
    userId : {type : mongoose.Schema.Types.ObjectId, ref : 'UserMapping'}, 
    firstName: { type: String, required: true}, 
    middleName : String, 
    lastName: { type: String, required: true}, 
    jobTitle : String, 
    signumId : { type: String, required: true}, 
    //userGroupId : { type: String, required: true}, 
    emailAddress : { type: String, required: true, unique: true}, 
    contactNumber : String, 
    status : Boolean, 
    image : String, 
    createdDate : String, 
    lastUpdatedData : String, 
    lastLogin: String 
}); 
    var userModel = mongoose.model('User', userSchema); 

とスキーマをUserMappingは次のとおりです。

var userMappingSchema = new userMappingSchema({ 
    userId: String, 
    userGroupId : { type: String, required: true}, 
    createdDate : String, 
    lastUpdatedData : String 
}); 

var userMappingModel = mongoose.model('UserMapping', userMappingSchema); 

その後、私はデータを移入しようとしていますし、私だけからデータを取得していますユーザーコレクションではなく、usermappingコレクションからのコレクションではありません。 DBに保存するための

コード:

var userMappingWithGroup = new userMapping({ 
         "userId": newUser._id, 
         "userGroupId": req.body.userGroupId 
        }); 

        userMappingWithGroup.save(function(err, userGroup) { 
         if (err) { 
          res.json({ 
           "message": err.message, 
           "statusCode": err.code 
          }); 
         } else { 
          newUser.userId = userGroup._id 
          newUser.save(function(err) { 
           if(err){ 
            res.json({ 
             "message": err.message, 
             "statusCode": err.code 
            }); 
           }else{ 
            customError.errCode = 113; 
            next(customError); 
           } 
          }); 
         } 
        }); 

ここで私は、移入のためのコードです:

var User = require('../models/user').userModel; 
    var userMapping = require('../models/userMapping').userMappingModel; 

    var fetchEditUser = function(req, res) { 
     console.log(req.params._id); 
     User.findOne({userId: req.params._id}) 
      .populate('userId') 
      .exec(function (err, result) { 
      if(err) { 
       res.json({"message":"Error On Fetching Users from DB", "errorCode":500 }); 
      } 
      else { 
       console.log(result); 
       res.json({"message":"success", "errorCode":200, "data": result }); 
      } 
     }); 
}; 

私が間違ってやっているところ誰が私を助けることができる、私はMongoDBのに新しいです。

+3

参照がuserMappingに格納されている間は、ユーザーモデルにデータが設定されています。もう一度チェックしてください。 – nurulnabi

+0

フォームユーザーコレクションを取得中にデータを取得したい。どうすればいいか教えてください。 –

+0

の場合、ユーザスキーマのフィールドを 'userId:{type:mongoose.Schema。Types.ObjectId、ref: 'UserMapping'} ' – nurulnabi

答えて

1

ここで達成しようとしていることは完全にはわかりませんが、あなたのスキーマと呼び出しは間違っています。

UserMappingスキーマに参照を追加しています。あなたはそれを使用したい場合は、だからUserMapping.find({})は、すべてのマッピングを取得し、populate('userId')Userの対象とuserId値を置き換えます

UserMapping.find({}).populate('userId')

する必要があります。

更新:
あなたはUsersからデータを取得して、マッピングを移入する場合は、UserスキーマにuserMappingIdの参照を追加する必要があります。

また、私の意見ではuserIdtypeは、あなたが記事とその作者のリストを取得したい場合は、あなたがArticleスキーマにuserIdの参照を追加する必要がありますmongoose.Schema.ObjectId


でなければなりません。

Article.find().populate("userId")

これを見てください: http://mongoosejs.com/docs/populate.html

+0

Usermappingコレクション構造はuserIdとgroupIdです。この場合、ユーザースキーマ内でrefrence UsermappingIdも使用します。 –

+0

こんにちはアニタ。あなたは両側の参照が必要ない。私はあなたに2つの選択肢を示しました。 'User'に' UserMapping'の参照を与えると、 'User'スキーマを利用して' UsermappingId'を設定することができます。 しかし、あなたは 'UserMapping'に' userId'の参照を与えました。この方法で 'UserMapping.find'を実行する必要があります –

+0

レコードを取得するために参照を追加するスキーマを使用する必要があります。 –

0

は、ユーザーとuserMappingにデータを保存しているあなたのコードを更新します。ユーザーが保存されている最後の場所では、必要な部分が2つあります。

var userMappingWithGroup = new userMapping({ 
     "userId": "", 
     "userGroupId": req.body.userGroupId 
    }); 

    userMappingWithGroup.save(function(err, doc) { 
     if (err) { 
      res.json({ 
       "message": err.message, 
       "statusCode": err.code 
      }); 
     } else { 
      // customError.errCode = 113; 
      // next(customError); 
      var newUser = new user(req.body); 
      newUser.userId = doc._id 
      newUser.save(function(err, user){ 
       if(err){ 
        res.json({ 
         "message": err.message, 
         "statusCode": err.code 
        }); 
       }else{ 

        //////////// this ////////////////////// 
        customError.errCode = 113; 
        next(customError); 

        ///////////// OR /////////////////////// 

        // userMappingWithGroup.userId = user._id; 
        // userMappingWithGroup.save(function(err, res){ 
        //  if (err) { 
        //   res.json({ 
        //    "message": err.message, 
        //    "statusCode": err.code 
        //   }); 
        //  } else { 
        //   customError.errCode = 113; 
        //   next(customError); 
        //  } 
        // }) 
       } 
      }) 
     } 
    }); 
+0

1つの質問はobjectIdが参照目的で使用するために保存されていることです。他にもユニークな固有のファイルを使用する必要があります。 –

+0

答えをくれてありがとう、私のために完全に助けてください –

+0

モンゴーズは、人口のための '_id'だけをサポートしています。しかし、他のフィールドは一意であるかもしれないが、人口に関しては数えない。 – nurulnabi

関連する問題