board

자유롭게
이야기 합시다 :)

Node.js와 Mongodb 저장 문제

질문
작성자
ShuMing
작성일
2017-08-15 21:06
조회
689
// DB.js
var mongoose = require('mongoose');
var moment = require('moment');
var autoIncrement = require('mongoose-auto-increment');
var Promise = require('mpromise');
mongoose.Promise = global.Promise;

//connect db
var uri = 'mongodb://localhost:27017/db';
var options = {
server: {poolSize: 100}
};
var db = mongoose.createConnection(uri, options);

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function callback(){
console.log('Mongo db connection successfully!!!!');
});

//Create Schema
var BoardSchema = new mongoose.Schema({
name: String,
title: String,
date: { type: Date, default: Date.now }
});

var BoardModel = mongoose.model('Board',BoardSchema);

module.exports = BoardModel;

--------------------------------------------------------------------

var BoardModel = require('../models/db');

/* GET home page. */
router.post('/post', function(req, res, next){
console.log('req.body : ', req.body);
var name = req.body.name;
var title = req.body.title;

var data = {
"name":name,
"title":title
};
var board = new BoardModel(data);

console.log(board);

board.save(function(err,doc){
if(err){
console.error(err);
res.json({result: 0});
return;
}
console.log('doc : ',doc);
res.json({result: 1});
});
});

req.body는 콘솔에 찍히는데, 저장이 되지 않습니다. 문제가 있다면 알려주세요
전체 3

  • 2017-08-15 23:52
    안녕하세요~
    1. 스키마를 정의하는 곳에서 new 부분은 빼셔야 됩니다.
    new는 구조체를 정의할 때 사용을 해야는데, 스키마에서 사용하셨네요.

    2. 저장이 안되는 문제는 스키마의 정의와 사용이 제대로 설정되어 있지 않아서 생기는 문제로 보입니다.
    정의된 스키마를 var board = new BoardModel(data); 와 같이 사용하셨는데요,
    board = new BoardModel로 정의를 하면 BoardModel의 구조체는 board에 정의됩니다.

    따라서
    var board = new BoardModel();
    board.name = name;
    board.title = title;
    board.save(function(err, doc){ ~~ });

    이렇게 작성하셔야 합니다~

    도움이 되었으면 좋겠네요 ㅎㅎ

    • 2017-08-20 21:57
      그렇게 수정을 하였는데 여전히 저장이 되지 않습니다.

      • 2017-08-21 11:46
        제가 작성한 튜토리얼의 내용이라면 얼마든지 테스트를 해서 알려드릴 수 있지만, 위의 경우는 제가 프로그램을 만들지 않아서 에러메세지나 파일구조 같은 기타 다른 환경에 대해서 말씀해주시지 않으면 알기가 어렵습니다.
        제가 말씀드린대로 작성을 했는데 저장이 되지 않는다면, 스키마를 require하는 부분에서 문제가 있을것 같네요.
        스키마의 경로라든지 파일명이라든지 기타 등등을 확인하고 콘솔로 BoardModel이 제대로 나오는지 확인이 필요합니다.
        제대로 모델이 종속이 되었고, 데이터베이스 서버가 제대로 동작하고, 데이터서버와 커넥트가 연결이 제대로 되어 있다면
        저장이 되어야하는게 맞습니다.
        전부 제대로 세팅이 되어 있는데 저장이 안되는거라면 컴퓨터 환경에 문제가 있을 가능성이 있습니다.
        그리고 데이터가 저장되었는지는 직접 데이터베이스를 조회해서 확인해보시는것을 추천합니다.