2017-11-03 4 views
1

私は、ユーザーモデル、ブログモデル、カテゴリモデルを持つブログサイト(中程度)に取り組んでいます。基本的な考え方は、ユーザーDBにユーザーを保存することです。ブログDBとカテゴリDBのすべてのブログには、投稿可能なさまざまな種類のブログが含まれています。MongoDBの1つのモデルに2つの参照を追加するにはどうすればよいですか?

ブログの投稿者であるユーザーの参照とBlogDBのカテゴリをBlogDBに保存したかったのです。私が作ったスキーマがあるfollows-

ブログSchema-

var blogSchema = new mongoose.Schema({ 
title: String, 
content: String, 
image: String, 
createdAt: Date, 
blogCategory : { 
    id: { 
     type : mongoose.Schema.Types.ObjectId, 
     ref : "Category" 
    } 
}, 
author: { 
    id: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "User" 
    }, 
    username: String 
}}); 

ユーザーSchema-

var UserSchema = new mongoose.Schema({ 
firstname: String, 
lastname: String, 
username: String, 
password: String, 
email: String }); 

カテゴリーSchema-

var categorySchema = new mongoose.Schema({ 
name : String }); 
として

これで、データベースにブログを保存すると、 'blogCategory'フィールドを除くすべてのデータが正しく保存されます。それはそれを登録することさえしません。その名前の空フィールドも作成しません。

1つのスキーマに2つの参照を追加することはできませんか?私はここで何ができますか?

また、私はNodeJSとMongoDBの新機能です。ここの提案は感謝しています。私はこのアイデアを実装するか、別のアプローチをとるべきかについてアドバイスをしてください。ありがとう!

答えて

0

OK]をクリックして、すべての まずあなたのスキーマのためのモデルを作成して解決するために私は少し時間がかかりました:

For user: 
var usermodel = mongoose.model('User',UserSchema). 
Note: Pass reference for author as 'User' <first argument in mongoose.model()>. 

For blogCategory: 
var blogCategorymodel = mongoose.model('Category',cateogrySchema). 
Note: Pass reference for blogCategory as 'Category' <first argument in mongoose.model()>. 

Now we are left with only the saving stuff: 

To Save Them Create instances of each user and blogCategory models: 
var newuser = new usermodel({give the details}). 
var newcateogry = new blogCategorymodel({give the details}). 

Now create model for your blog: 
var blogmodel = mongoose.model('blog',blogSchema). 
Now Create instance of your blogmodel: 
var newblog = new blogmodel({give the other details,'author.id':newuser._id,'author.username':newuser.username,'blogCategory.id':newcategory._id}) 
Now Save All Three: 
Promise.all([newuser.save(),newcateogry.save(),newblog.save()]).then((result)=>{console.log(result)}) 
関連する問題