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);
});
});
});
};
ようにする必要があり、それを移入'および' user'オブジェクトをコールバック – turmuka
これは実際には "別のコレクション"に格納されていないことに気付きます。だからあなたの質問のタイトルが間違っているか、あなたはその概念全体を見落としています。あなたのインクルードされたスキーマは "埋め込み"です。つまり、データは親ドキュメントの配列内に含まれています。あなたは 'Bid'の定義と実際に' req.body'に送られているものを表示する必要もあります –