2016-07-12 4 views
1

Я использую Mongoose для создания схемы и попытки добавить данные в mongoDB через Postman и добавляет пустые данные в db. Я предполагаю, что моя проблема заключается в том, как данные анализируются от браузера к серверу, это моя настройка app.js.Невозможно добавить данные в mongoDB

, что добавляется к БД

{ "_id" : ObjectId("57846282c7b5f51d4c1742a9"), "__v" : 0 } 

Вот файл в app.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var multer = require('multer');   
var routes = require('./routes/index'); 
var mongoose = require('mongoose'); 
var db = mongoose.connection; 
mongoose.connect('mongodb://localhost/growlingRabbit'); 
var Page = require('./models/growling_rabbit_page_text.js'); 

var app = express(); 


// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true})); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 


var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './uploads'); 
    }, 
    filename: function (req, file, callback) { 
    callback(null, file.fieldname + '-' + Date.now()); 
    } 
}); 
var upload = multer({ storage : storage}).single('userPhoto'); 

app.post('/api/photo',function(req,res){ 
    upload(req,res,function(err) { 
     if(err) { 
      return res.end("Error uploading file."); 
     } 
     res.end("File is uploaded"); 
    }); 
}); 

app.post('/api/text',function(req,res){ 
    var text = new Page();  
     text.name = req.body.name; 

     text.save(function(err) { 
      if (err) 
       res.send(err); 

      res.json({ message: 'Text Added!' }); 
     }); 

}); 



// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 


module.exports = app; 

Вот модель

var mongoose = require('mongoose'); 
var Schema  = mongoose.Schema; 
var pageSchema = new Schema({ 
    homePage: String, 
    communityPage: String, 
    eventPage: String, 
    contactPage: String, 
    galleryPage: String }); 

module.exports = mongoose.model('Page', pageSchema);; 

Помогите, я уверен, что это что-то больно очевидное, к сожалению, я не могу его найти.

+1

Любая ошибка во время выполнения этого сценария? –

+0

Ошибок при запуске. – Keon

ответ

1

Ну вы создаете Page с

var text = new Page();  
text.name = req.body.name; 

но ваша схема не имеет name свойства. Измените схему следующим образом:

var pageSchema = new Schema({ 
    name: String, 
    homePage: String, 
    communityPage: String, 
    eventPage: String, 
    contactPage: String, 
    galleryPage: String }); 

Еще одна проблема может быть с помощью неправильный вариант для размещения данных с помощью Почтальон.
Убедитесь, что x-www-form-urlencoded используется при тестировании узла API

Postman

+0

Thx! Большой мозг пуха там, к сожалению, это не устраняет проблему. – Keon

+0

Можете ли вы проверить, что это что-то экономит, если вы устанавливаете text.name в константную строку для целей тестирования? – DAXaholic

+0

Да, это сохраняет константу. – Keon

Смежные вопросы