2017-11-15 12 views
0

MEANスタックを使用して私のプロジェクトのAPIをビルドする。 私はmongodbをセットアップし、ちょうど物事をテストするために小さなコレクションを挿入しました。私はその後、APIとして単純なノードアプリケーションを作成しました。私はmongoでスキーマを定義するモデルも書いています。しかし、私は終点を呼び出すときにnullを出力し、コレクション内の文書にアクセスしません。 私は一般的な意味ではかなり初心者で、nodeとmongoを使った初めてのアプリケーションです。私の下にはアイブ氏はこれまでに行って何を貼り付けています:Node.jsアプリケーションがJSONを返しませんでしたか?

var express = require("express"); 
//need an object to represent express 
var app = express(); 
var bodyParser = require("body-parser"); 
var mongoose = require("mongoose"); 

//Connect to mongoose. 
mongoose.connect("mongodb://localhost/finalyearproject", { 
useMongoClient: true }); 
//db object 
var db = mongoose.connection; 

Victims = require("./models/victims"); 

//here we handle requests 
//starts with get request 
app.get("/", function(req, res) { 
res.send("First line!!"); 
}); 

app.get("/api/victims", function(req,res){ 
    Victims.getVictims(function(err, victims){ 
    if(err) { 
     throw err; 
    } 
    res.json(victims); 
    console.log(err); 
    console.log(victims.location); 
}); 
}); 

app.listen(8001); 
console.log("We are live on port 8001...."); 

IVEがすでにこれをデバッグするために、いくつかのログにスローさ見ることができるように。 それは私のモデルのコードです。

var mongoose = require("mongoose"); 

//Victims Schema 
var victimsSchema = mongoose.Schema({ 
    age : { 
    type : Number, 
    default : 0, 
    required : true 
    }, 
    gender : { 
    type : String, 
    required : true 
    }, 
location : { 
    type : String, 
    required : true 
    }, 
    type_of_crime : { 
    type : String, 
    required : true 
    } 
}); 

var Victims = module.exports = mongoose.model("Victims", victimsSchema); 

//get Victims 
module.exports.getVictims = function(callback){ 
    console.log(callback); 
    Victims.find(callback); 
}; 

と私の出力を返します。この:

We are live on port 8001.... 
[Function] 
null 
undefined 

それは、その適用はまだ初期段階以来、非常にシンプルに見えますが、私はそれを修正する方法は考えています?! 誰かが私にノードでかなり新しいことを言ったので、これで私を助けてください!

+1

あなたが '犠牲者 'を記録すると役に立つかもしれません... – jcaron

+0

私は既に持っていて、それは未定義です! –

答えて

0

// Expressにはミドルウェア機能があります。 JSONペイロードで受信リクエストを解析し、body-parserに基づいています。あなたもmongoose statics

使用して検討する必要があります1

app.use(bodyParser.urlencoded({extended: true})); 
app.use(bodyParser.json()); 
0

これは、私がfind方法は、最初のパラメータと、コールバックとしてcondition/queryを必要と信じて追加します。

あなたが代わりに例えば "コールバック" のオブジェクトを使用する必要が
victimsSchema.statics.getVictims = function(callback) { 
    return this.find({}, callback); 
}; 
0

:あなたはIDで検索したい

// get all the users 
User.find({}, function(err, users) { 
    if (err) throw err; 

    // object of all the users 
    console.log(users); 
}); 

または多分を:

// get a user with ID of 1 
User.findById(1, function(err, user) { 
    if (err) throw err; 

    // show the one user 
    console.log(user); 
}); 

希望これは

0

を支援解決策を見つけるのを手伝ってくれてありがとう。問題がどこにあったのか、どこに私のdbがlocalhostを介しているのかをmoongoseに伝えようとしている場所が見つかりました。私は実際のdbの名前ではなく、私のアプリの名前を指定しました。名前を変更すると、私は望んだ結果を得ました。

関連する問題