2017-03-03 11 views
0

ネストされたドキュメントを持つmongooseスキーマにobjectIdを割り当てようとしています。しかし、何らかの形でそれが保存されると、ObjectIdが変更されます。オブジェクトIDがマングースで変更される

review.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var user = require('./user.js'); 

var reviewSchema = new Schema({ 
    item_id:String, 
    review:[{ 
     item_review:String, 
     user: {type: Schema.Types.ObjectId,ref: 'user'} 
    }] 
},{ versionKey: false }); 



module.exports = mongoose.model('review',reviewSchema); 

user.jsの

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var user = new Schema({ 
    _id:String, 
    login_type:Number, // 0 :facebook, 1: google 
    profile_img:String, 
    ph_no:Number, 
    email_id:{type:String,required:true} 
},{ versionKey: false }); 


module.exports = mongoose.model('user',user); 

reviews.js私は実際のIDを変更することなく、両方のモデルを接続することができますどのように

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var reviews = require('./../model/review.js'); 
var user = require('./../model/user.js'); 


var getReview = function(req,res) { 
    reviews 
.findOne({'item_id':req.body.item_id.trim()}) 
.populate('user') 
.exec(function (err, review) { 
    if (err) res.json({ 
      status:'400', 
      message:'There is no data available' 
     }); 
     res.send({ 
      status:'200', 
      message:'Review List', 
      data:review 
     }); 
}); 
}; 


var addreview = function(req,res) { 
    reviews.findOne({'item_id':req.body.item_id.trim()},function(err,revie){ 
     if (err) res.json({ 
        status:'400', 
        message:'Oops, feedback can not be submitted' 
       }); 
     if(revie){ 
      revie.review.push({ 
       item_review:req.body.item_review.trim(), 
       user : mongoose.Types.ObjectId(req.body.user_id) 
       // user_id:req.body.user_id.trim(), 
       // user_name:req.body.user_name.trim() 
      }); 

      revie.save(function(err,review){ 
       res.json({ 
        status:'200', 
        message:'Thanks for your feedback' 
       }); 
      }); 
     } 
     else { 
      var newReview = new reviews(); 
      newReview.item_id = req.body.item_id.trim(); 
      newReview.review.push({ 
       item_review:req.body.item_review.trim(), 
       user : mongoose.Types.ObjectId(req.body.user_id) 
      }); 

      newReview.save(function(err,review){ 
       res.json({ 
        status:'200', 
        message:'Thanks for your feedback' 
       }); 
      }); 
     } 
    }); 
}; 


module.exports = {addreview,getReview}; 

+0

review.jsの代わりにuser.jsを2回ペーストしたようです。 –

+0

気付いてありがとうございます。私は自分の質問を更新しました –

+0

最初の数文はあいまいです。私が** req.body.user_id **を** user **に割り当てると、より多くの詳細を –

答えて

0

あなたが_idをObjectIdではない文字列として使用しているように見えますが、スキーマをこれに変更することをお勧めします。

var user = new Schema({ 
    login_type:Number, // 0 :facebook, 1: google 
    profile_img:String, 
    ph_no:Number, 
    email_id:{type:String,required:true} 
},{ versionKey: false }); 

デフォルトでは_idが削除されているため、_Iidは文字列ではなくObjectIdである必要があります。

関連する問題