2017-08-01 13 views
0

私はmongodbとnode.jsの間の接続を持っていますが、このメソッドをテストするときは、常にヌルまたはDBにないドキュメントを与えてください。私は間違って何をしていますか?私はルータがWebサービスRESTful with node.js

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" 
    } 
    } 

コントローラ/ taskLisController(私は応答を求めています)呼び出す

index.js(メインファイル)

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); 
    }) 
}); 
}; 

の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

「res.status(200).jsonp(tvshow)」を実行すると 'tvshow'は未定義です。 –

+2

あなたは本当に字下げを制御し、関数間にあるスペースを持っている必要がありますが、コードは構文上問題ないので、読んで苦労します。 – cbll

+0

私の謝罪node.jsで本当に初心です。 –

答えて

0

最初は私のモデル、あなたはとてもコードを正しくフォーマットするあなたの質問を編集してみてくださいここで新しいように見えます。今あなたの圧痕は完全に台無しになってしまい、読みにくく誤解を招きます。また、コードを絞り込んで、問題を実証するための最小限の例と期待される出力と実際の出力を表示してください。それはあなたの問題を解決する答えを得る可能性をより高くします。

私はMongoDBのとNode.jsの間の接続を持っているが、私は、このメソッドをテストするとき、いつも私のDBに存在しないことをnullまたは文書を与えます。 [重点追加]

私は本当にあなたがデータベースにない文書を実際に取得することは疑いありません。正しいデータベースに接続していない可能性があります。あるいは、そうでないと思っても、それらの文書はデータベースに入っているかもしれません。どちらの方法でも、データベースにないドキュメントを入手することについて聞いたことがありません。彼らはデータベース内にある(または使用されていた)他の文書と何らかの形で似ていますか?もしそうなら、私は彼らがデータベースにいると仮定し、あなたはなぜそれを調べる必要があります。

コマンドラインコンソールを使用してデータベースに接続し、データベースに含まれていないものと存在しないものを確認しましたか?確かにそれから始めるべきです。

+0

私は申し訳ありません。私はnode.jsで本当に初心です。私は接続を持っている、私は応答で不正な体を受け取る。たとえば、私はデータベースに2つの文書しか持っていませんが、その応答は私にそのIDだけを持つ12の文書を与えます。 –

関連する問題