native mongodb driver로 데이터 검색할 때는 아래와 같은 코드로 작성하였다.
mongodb
하지만 이제는 이렇게 긴 코드는 필요없다
Mongoose로 데이터 찾기
mongoose는 간단하다
find() 함수를 사용하고, 콜백 함수까지 받을 수 있다.
콜백함수의 파라미터를 보면
파라미터1 은 err를 넣고
파라미터2 는 검색하고자 하는 내용을 넣어준다.
fruits로 collection 안 모든 데이터가 나오게 했다.
에러가 없으면 검색 내용이 나온다.
나오는 데이터들은 array 안에 들어가 있는 자바스크립트 오브젝트이다.
dot notation을 이용해서 이 데이터들의 properties를 활용할 수 있고,
2개의 다른 method를 보낼 수 있다. pass around.
fruit은 각각 property를 가지고 있다.
name, rating, review..
각 property는 value와 연관되어 있다.
fruit 이름만 log 에 나오게 해보기
forEach와 fruit.name
또는
close connection Mongoose 연결 끊기
mongoose와 연결하려면
mongoose.connect() 코드를 사용하였다.
mongoose와 연결을 끊으려면 어떻게 해야할까?
터미널에서 node app.js 누르면 mongoose로 들어가고
그 안에 있다가 다시 ctrl+ C로 밖에 나와서
다시 node app.js을 눌러 다시 들어가기를 반복했다.
이렇게 불편하게 하지 말고
작업이 끝나면 연결이 끊기게 해놓아야한다.
이 때 mongoose.connection.close(); 를 사용한다.
한 바퀴 작업 돌고 자동으로 빠져나왔다.
Fruit.find(function(err, fruits) {
if (err) {
console.log(err);
} else {
mongoose.connection.close();
fruits.forEach(function(fruit) {
console.log(fruit.name);
});
}
});
const mongoose = require('mongoose');
mongoose.connect("mongodb://localhost:27017/fruitsDB", { useNewUrlParser: true });
const fruitSchema = new mongoose.Schema({
name: String,
rating: Number,
review: String
});
const Fruit = mongoose.model("Fruit", fruitSchema);
const fruit = new Fruit({
name: "Apple",
rating: 7,
review: "Pretty solid as a fruit."
});
// fruit.save();
const personSchema = new mongoose.Schema({
name: String,
age: Number
});
const Person = mongoose.model("Person", personSchema);
const person = new Person({
name: "Alex",
age: 39
});
// person.save();
const kiwi = new Fruit({
name: "Kiwi",
rating: 10,
review: "The best fruit."
});
const orange = new Fruit({
name: "Orange",
rating: 4,
review: "Too sour for me."
});
const banana = new Fruit({
name: "banana",
rating: 3,
review: "Weird texture."
});
// Fruit.insertMany([kiwi, orange, banana], function(err) {
// if (err) {
// console.log(err);
// } else {
// console.log("successful saved all the fruits to fruitsDB")
// }
// });
Fruit.find(function(err, fruits) {
if (err) {
console.log(err);
} else {
mongoose.connection.close();
fruits.forEach((fruit) => {
console.log(fruit.name);
});
}
});