2017-08-01 3 views
0

J'ai une connexion entre mongodb et node.js, mais quand je teste cette méthode, donnez-moi toujours des null ou des documents qui ne sont pas dans la base de données. Qu'est-ce que je fais mal?Service Web RESTful avec node.js

index.js (fichier principal) Où j'appelle les routeurs

var express = require("express"), 
app = express(), 
bodyPaser = require("body-parser"), 
methodOverride = require("method-override"), 
mongoose = require('mongoose'); 
var port = 3000; 
mongoose.connect('mongodb://localhost:27017/task', 
function(err,res){ 
if(err){return console.log(`Error al Conectar a la BD stablish ${err}`)}; 
console.log('Conexión a la BD stablish');},{ useMongoClient: true }); 
app.use(bodyPaser.urlencoded({ extended : false})); 
app.use(bodyPaser.json({ type: 'application/json' })); 
app.use(methodOverride()); 
var models = require('./models/task')(app, mongoose); 
var TaskListCtrl = require('./controller/taskListController'); 
var router = express.Router(); 
router.get('/', function(req, res) { 
res.send("Hello world!"); 
}); 
app.use(router); 
var task = express.Router(); 
task.route('/task') 
.get(TaskListCtrl.findAllTasks) 
.post(TaskListCtrl.addTask); 
task.route('/task/:id') 
.get(TaskListCtrl.findById) 
.put(TaskListCtrl.updateTask) 
.delete(TaskListCtrl.deleteTask); 
app.use('/api', task); 
app.listen(3000, function() { 
console.log("Node server running on http://localhost:3000"); 
}); 

package.json

{ 
    "name": "restnodetask", 
    "version": "1.0.0", 
    "description": "Proyecto de API RESTful con Node.js y Express", 
    "main": "index.js", 
    "scripts": { 
       "start": "nodemon index.js", 
       "test": "echo \"Error: no test specified\" && exit 1" 
       }, 
    "author": "Jean Carlo Flores", 
    "license": "MIT", 
    "dependencies": { 
    "body-parser": "^1.17.2", 
    "express": "^4.15.3", 
    "method-override": "^2.3.9", 
    "mongodb": "^2.2.30", 
    "mongoose": "^4.10.8" 
    }, 
    "devDependencies": { 
    "nodemon": "^1.11.0" 
    } 
    } 

contrôleur /taskLisController (où je vous demande de réponse)

var mongoose = require('mongoose'); 
var Task = mongoose.model('Task'); 
exports.findAllTasks = function(req, res) { 
Task.find(function(err, task) { 
if (err) res.send(500,err.message); 
console.log('GET /tasks'); 
res.status(200).jsonp(task); 
res.body = task; 
}); 
}; 
exports.findById = function(req, res) { 
Task.findById(req.params.id, function(err,task) { 
if(err) return res.send(500, err.message); 
console.log('GET /task/' + req.params.id); 
res.status(200).jsonp(task); 
}); 
}; 
exports.addTask = function(req, res) { 
console.log('POST'); 
console.log(req.body); 
var task = new Task({ 
    objectId : req.body.objectId, 
    title : req.body.title, 
    remember : req.body.remember, 
    date_time : req.body.date_time 
}); 
task.save(function(err, task) { 
    if(err) return res.send(500, err.message); 
    res.status(200).jsonp(task); 
}); 
}; 
exports.updateTask = function(req, res) { 
Task.findById(req.params.id, function(err, task) { 
    task.objectId = req.body.objectId; 
    task.title = req.body.title; 
    task.remember = req.body.remember; 
    task.date_time = req.body.date_time; 
    task.save(function(err) { 
      if(err) return res.send(500, err.message); 
      res.status(200).jsonp(task); 
    }); 
}); 
}; 
exports.deleteTask = function(req, res) { 
Task.findById(req.params.id, function(err, task) { 
    task.remove(function(err) { 
     if(err) return res.send(500, err.message); 
     res.status(200); 
    }) 
}); 
}; 

Mon modèle à MongoDB

exports = module.exports = function(app, mongoose) { 
var taskSchema = new mongoose.Schema({ 
objectId : { type:String} , 
title : { type:String}, 
remember : { type: Boolean}, 
date_time : { type:Date} 
}); 
mongoose.model('Task',taskSchema); 
}; 
+0

La seule chose évidente que je peux voir est que 'tvshow' est indéfini quand vous faites' res.status (200) .jsonp (tvshow) '. –

+2

Vous avez vraiment besoin de contrôler l'indentation et avoir un peu d'espace entre les fonctions, alors que votre code peut être OK en termes de syntaxe, il est pénible à lire et donc vous aider – cbll

+0

Mes excuses Je suis vraiment novice avec node.js. –

Répondre

0

Tout d'abord, vous semblez être nouveau ici, donc s'il vous plaît essayer de modifier votre question pour formater le code correctement. En ce moment, votre indentation est complètement foirée, ce qui la rend très trompeuse et impossible à lire. Essayez également d'affiner votre code pour montrer un exemple minimum qui démontre votre problème, avec les résultats attendus et réels. Cela rendra beaucoup plus probable d'obtenir une réponse qui résoudrait votre problème.

J'ai un lien entre MongoDB et Node.js, mais quand je teste ces méthodes, me donnent toujours des documents nuls ou qu'il n'y a pas dans le DB. [je souligne]

Je doute fortement que vous obteniez vraiment tous les documents qui ne sont pas dans la base de données. Peut-être que vous n'êtes pas connecté à la bonne base de données. Ou peut-être que ces documents sont dans la base de données même si vous pensez qu'ils ne le sont pas. De toute façon, je n'ai pas entendu parler de documents qui ne sont pas dans la base de données. Ressemblent-ils de quelque manière que ce soit aux autres documents qui sont (ou étaient) dans la base de données? Si oui, alors je suppose qu'ils sont dans la base de données et vous devez étudier pourquoi.

Avez-vous essayé de vous connecter à la base de données avec une console de ligne de commande pour vérifier ce qui est et ce qui ne se trouve pas dans la base de données? Vous devriez certainement commencer à partir de cela.

+0

Mes excuses je suis vraiment novice avec node.js. J'ai la connexion, je reçois par la réponse un corps incorrect. Par exemple j'ai seulement 2 documents dans ma base de données, mais la réponse me donne 12 documents avec seulement son identifiant chacun. –