2016-04-13 12 views
0

Userスキーマでは、Customerというスキーマへの参照があります。 Expressコントローラで参照は設定されていません

const UserSchema = new Schema({ 
    customer: { type: Schema.Types.ObjectId, ref: Customer }, // Customer is the compiled CustomerSchema 
    ... 
}); 

const CustomerSchema = new Schema({ 
    name: String, 
    ... 
}); 

、私は、ユーザーをフェッチしていると私は戻っJSONで顧客を埋め込むしようとしている:

export function me(req, res, next) { 
    User 
    .findOne({ _id: req.user._id }, '-salt -hashedPassword') 
    .populate('customer') 
    .exec((err, user) => { 
     if(err) return next(err); 
     if(!user) return res.json(401); 
     res.json(user); 
    }); 
} 

しかし応じて、customernullです。

私が使用してテストデータ:

ユーザードキュメント:

{ 
    "_id" : ObjectId("570d1f0938f7da5151b815d2"), 
    "customer" : ObjectId("570d1f0838f7da5151b815d0"), 
    ... 
} 

関連する顧客のドキュメント:

{ 
    "_id" : ObjectId("570d1f0838f7da5151b815d0"), 
    ... 
} 

おそらくnoobの質問に、私は何を私が表示されません

+0

は私によく見えます。クエリに入力する前にドキュメントを保存するために待っていましたか(コールバックを完了しましたか?) – lipp

+0

はい:/ (SOは最小15文字のコメントを受け入れるのでここでは無用なテキストです) –

答えて

2

私はrefが文字列でなければならないと思う:

customer: { type: Schema.Types.ObjectId, ref: 'Customer' }, 
+0

ありがとう、 'ref'は' mongoose.model(modelName:string、schema: mongoose.Schema) 'が呼び出され、スキーマがモデルにコンパイルされます。はい、それはnoobの質問だった:) –

関連する問題