2015-02-06 95 views
1

貓鼬新問題。我試圖建立一個MEAN應用程序,根據用戶輸入的參數查詢現有的數據庫。外部程序正在使用JSON填充數據庫。貓鼬路由特定查詢輸出

到目前爲止,我有我的路由器成功地顯示,當我使用下面的路由器所有的Mongo的記錄:

// Pulls all JSONs 
router.get('/jsons', function(req, res, next) { 
    Json.find(function(err, jsons){ 
     if(err) { return next(err);} 

     res.json(jsons); 
    }); 
}); 

現在我試圖創建一個單獨的路徑,可以在該數據庫中顯示的特定字段。 (凡TestLocation =「紐約」)

// Pulls a JSON with City New York 
router.get('/jsons/NewYork', function(req, res, next) { 
    var queryNYC = Json.where({TestLocation: "New York"}); 
    queryNYC.findOne(function(err, jsons) { 
     if(err) { return next(err);} 
     res.json(jsons); 
    }); 
}); 

這是返回null對我來說,雖然原來的路線表明,一個JSON記錄確實有紐約的TestLocation。

我的模式是這樣的:

var mongoose = require('mongoose'); 

// Base schema for the query results table 
var JsonSchema = new mongoose.Schema({ 
     uploadID: String, 
     uploadDate: Date, 
     testDate: Date, 
     username: String, 
     type: String, 
     markers: String, 
     image: String, 
     TestLocation: String 
    }, 
    { 
     collection: 'data' 
    } 
); 

mongoose.model('Json', JsonSchema); 

所以我的問題:

A)我是不是這一設置正確

B)我需要我的貓鼬模式以匹配什麼在數據庫究竟?我的Mongoose模式有一個TestLocation字段,它與MongoDB數據庫中的TestLocation字段相匹配,但我在MongoDB數據庫中還包含很多未包含在模式中的字段。我是否需要包括這些才能看到這個工作?

謝謝!

回答

1

你在做什麼看起來不錯,數據庫中的數據不必與數據相同。使用以下內容:

Json.findOne({TestLocation: "New York"}, function(err, jsons) { 
    if(err) { return next(err);} 
    res.json(jsons); 
}); 
+0

欣賞關於數據不匹配的答案。不幸的是,改變findOne還沒有解決我的問題。需要繼續環顧四周。 – 2015-02-06 18:15:16

+0

其實它看起來像我發現我自己的問題。我查詢的變量實際上是一個大對象內的參數。 – 2015-02-06 18:24:33