Skip to content

Instantly share code, notes, and snippets.

@yukeehan
Created July 12, 2018 16:00
Show Gist options
  • Save yukeehan/c61972e576c6dede2d59e04bcda47112 to your computer and use it in GitHub Desktop.
Save yukeehan/c61972e576c6dede2d59e04bcda47112 to your computer and use it in GitHub Desktop.
Association by MongoDB (2 ways: embedding data & object reference)
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/blog_demo", { useNewUrlParser: true });
// POST - title, content
var postSchema = new mongoose.Schema({
title: String,
content: String
});
var Post = mongoose.model("Post", postSchema);
// USER - email, name
var userSchema = new mongoose.Schema({
email: String,
name: String,
posts: [postSchema] // have to be the Schema name
});
var User = mongoose.model("User", userSchema);
// var newUser = new User({
// email: "shan@gmail.com",
// name : "shan"
// });
// newUser.posts.push({
// title: "yeah",
// content: "oh"
// });
// newUser.save(function(err, user){
// if(err){
// console.log(err);
// } else {
// console.log(user);
// }
// });
User.findOne({email:"shan@gmail.com"}, function(err, user){
if(err){
console.log(err);
} else {
user.posts.push({
title: "cool",
content: "no"
});
user.save(function(err, user){
if(err){
console.log(err);
} else {
console.log(user);
}
})
}
});
// var newPost = new Post({
// title: "food",
// content: "yami"
// });
// newPost.save(function(err, post){
// if(err){
// console.log(err);
// } else {
// console.log(post);
// }
// })
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/blog_demo_3", { useNewUrlParser: true });
// POST - title, content
var postSchema = new mongoose.Schema({
title: String,
content: String
});
var Post = mongoose.model("Post", postSchema);
// USER - email, name
var userSchema = new mongoose.Schema({
email: String,
name: String,
posts: [
{
type: mongoose.Schema.Types.ObjectId,
ref:"Post"
}
]
});
var User = mongoose.model("User", userSchema);
User.create({
email: "shan@gmail.com",
name: "shan"
});
// Create a new post for the user named "shan"
// Post.create({
// title:"title_2",
// content:"content_2"
// },function(err, post){
// if(err){
// console.log(err);
// } else {
// User.findOne({name:"shan"}, function(err, foundUser){
// if(err){
// console.log(err);
// } else {
// foundUser.posts.push(post);
// foundUser.save(function(err, data){
// if(err){
// console.log(err);
// } else {
// console.log(data);
// }
// });
// }
// });
// }
// });
// Show all the posts
User.findOne({name:"shan"}).populate("posts").exec(function(err, user){
if(err){
console.log(err);
} else {
console.log(user);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment