2015-06-18 2 views
0

У меня возникли проблемы с проектом, над которым я работаю. Я хочу создать базу данных, в которой я могу хранить даты и ссылки на видеоролики YouTube в базе данных MongoDB. Я использую Mongoose как ORM. Проблема заключается в том, что создается база данных и коллекция, и я могу читать и обновлять ее за пределами маршрутов, но не внутри (если кто-то может понять, что я говорю). Я хочу иметь возможность сделать запрос GET для текущих элементов в базе данных на маршруте/database, а также сделать POST на маршрут/database.Как обновить и прочитать коллекцию в MongoDB с помощью Mongoose

Мой код приведен ниже. Пожалуйста, помогите:

//grab express and Mongoose 
var express = require('express'); 
var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

//create an express app 
var app = express(); 

app.use(express.static('/public/css', {"root": __dirname})); 

//create a database 
mongoose.connect('mongodb://localhost/__dirname/data'); 

//connect to the data store on the set up the database 
var db = mongoose.connection; 

//Create a model which connects to the schema and entries collection in the __dirname database 
var Entry = mongoose.model("Entry", new Schema({date: 'date', link: 'string'}), "entries"); 

mongoose.connection.on("open", function() { 
    console.log("mongodb is connected!"); 
}); 

//start the server on the port 8080 
app.listen(8080); 

//The routes 

//The route for getting data for the database 
app.get("/database", function(req, res) { 
    Entry.find({}, function(err, data) {console.log(err, data, data.length); }); 

}); 

//The route for posting data on the database 
app.post("/database", function(req, res) { 
    //test new post 
    var newMonth = new Entry({date: '1997-10-30', link: 'https://wwww.youtube.com/'}); 
     newMonth.save(function(err) { 
      if (err !== null) { 
       //object was not save 
       console.log(err); 
        } else { 
       console.log("it was saved!") 
     }; 
    }); 
}); 



//create an express route for the home page at http://localhost:8080/ 
app.get('/', function(req, res) { 
    res.send('ok'); 
    res.sendFile('/views/index.html', {"root": __dirname + ''}); 
}); 

//Send a message to the console 
console.log('The server has started'); 
+0

Как вы делаете эти запросы? Использование завитка? –

+0

Я не понимаю ваш вопрос. Я использую Node.js + Mongoose для выполнения запросов, насколько мне известно. Извиняюсь, что я немного нуб с этими вещами. – Siya

+0

Чтобы проверить маршруты GET и POST, вам нужно будет передать GET или POST-глагол вместе с запросом или сервер не будет знать, что вы хотите с ним делать. Или вы используете форму для этого? –

ответ

0

Ваш запрос GET должен работать, потому что браузер выполняет запрос GET по умолчанию. Попробуйте следующее.

app.get("/database", function(req, res) { 
    Entry.find(function(err, data) { 
     if(err) { 
      console.log(err); 
     } else { 
      console.log(data); 
     } 
    }); 

}); 

Насколько тестирование маршрута POST касается, установить плагин для Google Chrome под названием Postman. С его помощью можно выполнять всевозможные запросы. Это отлично подходит для тестирования.

+0

Спасибо. Кажется, это работает. – Siya

+0

Нет проблем. Также проверьте Postman, как я упоминал ранее. Это упростит вашу жизнь при выполнении таких тестов. –

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