2016-12-26 5 views
3

Я отправляю запрос на отправку API, который я сделал. Почтовый запрос отправляет некоторые данные, которые будут храниться в моей локальной базе данных.Mongoose не вставляя данные

var Loc = require('../models/locationSchema'); 
module.exports.locationsCreate = function(req, res){ 
console.log(req.body.name); 
console.log(req.body.address); 


Loc.create({ 
    name: req.body.name, 
    address: req.body.address, 
}, function(err, data){ 
    console.log('inside callback!'); 
    if (err){ 
     res.send('error'); 
    } else { 
     res.send('success'); 
    } 
}); 
console.log('reached end of function'); 
}; 

Вот схема,

var locationSchema = new mongoose.Schema({ 
    name: {type: String, required: true}, 
    address: {type: String, required: true}, 
}); 

module.exports = mongoose.model('Location', locationSchema); 

Mongoose подключается правильно. И мой маршрутизатор правильно обрабатывает почтовый запрос.

Я отправляю заявку с использованием почтового менеджера с именем и адресом. Ничего не происходит, и через несколько секунд я получаю сообщение «Не могу получить ответ». В базу данных ничего не добавляется.

Консоль печатает имя, адрес, а затем «достигает конца функции». Он никогда не показывает «внутренний обратный вызов»

+0

Код выглядит хорошо для меня, я не понимаю, почему обратный вызов не вызывается. Вы уверены, что правильно подключены к серверу MongoDB? –

+0

Можете ли вы разместить более подробную информацию, где вызывается функция 'locationsCreate()'? Вы вызывали 'mongoose.connect ('db url')' перед выполнением функции 'locationsCreate()'? – Karlen

+0

@AntonioVal Да, это соединение –

ответ

0

Я вижу, что у вас есть пара конечных запятых (запятые после последнего элемента в объекте) в ваших объектах, попробуйте удалить их, поскольку это не разрешено в JSON, и они повлияют на выполнение вашего кода (функция в данном случае),
в схеме: address: {type: String, required: true}, // remove the comma at the end
и в Loc.create: address: req.body.address, // remove the comma at the end

+0

Упс. В моем исходном файле у меня нет никаких запятых. Я отправил это в спешке и редактировал свой код в браузере, поэтому забыл удалить их. Проблема все еще сохраняется, хотя –

0

Ваш код выглядит идеально подходит для меня на самом деле вы не включили модуль мангуста за исключением. Следовательно, вы не можете использовать метод mongoose create. Включить модуль мангуста как

var mongoose = require('mongoose'); 

Таким образом, ваш код должен выглядеть следующим образом:

var Loc = require('../models/locationSchema'); 
var mongoose = require('mongoose'); 

module.exports.locationsCreate = function(req, res){ 
    console.log(req.body.name); 
    console.log(req.body.address); 


    Loc.create({ 
     name: req.body.name, 
     address: req.body.address, 
    }, function(err, data){ 
     console.log('inside callback!'); 
     if (err){ 
      res.send('error'); 
     } else { 
      res.send('success'); 
     } 
    }); 
    console.log('reached end of function'); 
}; 

Надеется, что это помогает! Спасибо!

+0

Спасибо за ваш ответ. Я должен был упомянуть, что я уже назвал модуль. Моя проблема все еще сохраняется. –

0

Вам необходимо создать новый объект модели/схемы.

var LocationSchema = require('../models/locationSchema'); 

module.exports.locationsCreate = function(req, res){ 
console.log(req.body.name); console.log(req.body.address); 

var Loc = new LocationSchema(); 

Loc.create({ 
    name: req.body.name, 
    address: req.body.address, }, function(err, data){ 
    console.log('inside callback!'); 
    if (err){ 
     res.send('error'); 
    } else { 
     res.send('success'); 
    } }); console.log('reached end of function'); }; 
Смежные вопросы