還沒有在Node/Mongoose中體驗過。Mongoose將變量定義爲數字,但req.query中的值用引號引起來。我該如何處理?
鑑於瀏覽器這樣的查詢:
www.example.com/systems?properties.max_diameter=24
和貓鼬架構是:
var SystemSchema = new Schema({
....
properties: {
max_diameter: { type: Number, required: true}
}
});
module.exports = mongoose.model('System', SystemSchema);
使用的console.log(req.query),我所知道的節點控制器看到:
req.query = { 'properties.max_diameter': '24' }
請注意,值是用單引號引起來的。
因此,查詢失敗:
System.find(req.query).sort(sort_param).find(function(err, systems) {
res.send(systems);
});
但是,如果我硬編碼的價值,使我有這樣的:
System.find({'properties.max_diameter': 24}).sort(sort_param).find(function(err, systems) {
res.send(systems);
});
它完美的罰款。
當然,刪除引號很容易,但我不可能知道將使用的各種查詢組合。我認爲貓鼬會以某種方式處理這個問題,但我無法弄清楚我錯過了什麼或者做錯了什麼。
在此先感謝您的幫助。
乾杯。
Mongoose會根據模式定義爲您進行此類轉換。這裏還有其他事情要做。 – JohnnyHK
你應該使用'exec'而不是第二個'find',但這只是一個方面,因爲它對我來說都是有效的。 – JohnnyHK
JohnnyHK - 你有這方面演員的例子嗎?我可以找到驗證檢查的例子等,或者保存,但不是用於投射req.query。必須有一個優雅的方式來處理這個問題。 – Eric