2017-09-06 8 views
0

私はmongoDBとNodeJSを使ってAngularフロントエンドでアプリケーションを構築しています。私は現在、ユーザーがリスティングを作成し、次にそれらのリスティング内の入札で応答する他のユーザーが、それらのレスポンダーのデータを含めたいとします。私は入札機能にそのユーザーデータを含めて苦労しているのですが、その理由が分かりません。ここで mongooseオブジェクトに別のコレクションのデータを含めるにはどうすればいいですか?

は、これは私が現在、これは新しい入札のためにある新しいリスト

function create(req, res) { 
    db.User.findById(req.user, function (err, user) { 
    if (err) {console.log(err);} 
    var newListing = new db.Listing(req.body); 
    newListing.uid = user._id 
    newListing.save(function (err, savedListing) { 
     if (err) { 
     res.status(500).json({ error: err.message }); 
     } else { 
     user.listings.push(newListing); 
     user.save(); 
     res.json(savedListing); 
     } 
    }); 
    }); 
}; 

を作成する方法である上場スキーマ

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

var Bid = require('./bid'); 

var ListingSchema = new Schema({ 
    topic: String, 
    description: String, 
    budget: String, 
    location: String, 
    req1: String, 
    req2: String, 
    req3: String, 
    created: String, 
    dateReq: String, 
    uid: String, 
    bids: [Bid.schema] 
}) 

です。何らかの理由で、db.User情報が取得されず、コンソールログに空白のオブジェクトが表示されます。 (はい、私はそれをコメントアウト)

function create(req, res) { 
    // db.User.findById(req.user, function (err, user) { 
    // console.log(req.user); 
    // if (err) {console.log(err);} 
     db.Listing.findById(req.params.listingId, function(err, foundListing) { 
     var newBid = new db.Bid(req.body); // add data validation later 
    // newBid.uid = user._id 
     foundListing.bids.push(newBid); 
     foundListing.save(function(err, savedBid) { 
     res.json(newBid); 
     }); 
     }); 
    }); 
}; 
+0

ようにする必要があり、それを移入'および' user'オブジェクトをコールバック – turmuka

+1

これは実際には "別のコレクション"に格納されていないことに気付きます。だからあなたの質問のタイトルが間違っているか、あなたはその概念全体を見落としています。あなたのインクルードされたスキーマは "埋め込み"です。つまり、データは親ドキュメントの配列内に含まれています。あなたは 'Bid'の定義と実際に' req.body'に送られているものを表示する必要もあります –

答えて

0

は、オブジェクト参照としてuser_idを使用して試してみて、必要なときに、あなたのスキーマが、あなたが `req.userにログインしたとき、あなたは何を得るか、ややこの

var ListingSchema = new Schema({ topic: String,description: String, budget: String, location: String, req1: String, req2: String, req3: String, created: String, dateReq: String,//THIS CREATES A REFERENCE TO THE SCHEMA USER AND TO USE THIS YOU CAN POPULATE IT.. uid: {type:Schema.type.ObjectId,ref:User}, bids: [Bid.schema]}) 
関連する問題