我一直在nodejs中大多數情況下都相當成功地寫了一個restful api。 MongoDB中有兩個我正在訪問的集合,它們返回空字符串,並且恰好是名稱中包含大寫字母的唯一集合。當我使用MongoClient時,我可以很好地訪問這些集合,所以我知道它並不是過時的mongodb驅動程序。Mongoose查找返回空數組(適用於其他集合)
一個例子是,當我試圖訪問一個集合稱爲bulkBuds
//bulkBuds model
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var BulkBudsSchema = new Schema({
sourceLicense: String,
quantity: Number,
strainName: String,
priceProfile: String
});
mongoose.model('bulkBuds', BulkBudsSchema);
控制器具有查詢有點多餘的邏輯,而是一個簡單的查找返回一個空字符串爲好。
//bulkBuds controller
var express = require('express'),
router = express.Router(),
mongoose = require('mongoose'),
BulkBuds = mongoose.model('bulkBuds'),
Friends = mongoose.model('Api'),
config = require('../../config/config'),
jwt = require('express-jwt');
module.exports = function (app) {
app.use('/api/bulkBuds/', router);
};
router.get('/:license', jwt({secret: config.secret}), function (req, res, next) {
if(!req.user.friend){
res.status(401);
}
Friends.findById(req.user.id, function(err, friend){
if(err) throw err;
if(!friend) res.send("friend does not exist");
if(req.user.username != friend.username) res.send("invalid user");
console.log(req.params.license);
console.log(BulkBuds.find({}));
BulkBuds.find({'storeLicense': req.params.license, 'availableForSale': true},
"sourceLicense quantity strainName priceProfile", function (err, bulkBuds) {
if (err) return next(err);
console.log(bulkBuds);
res.send(bulkBuds);
});
})
});
任何建議將不勝感激,謝謝。
感謝您的回覆。這很好的建議,不幸的是我已經採取了這些步驟,但我非常感謝你的幫助。 – user3073234
嗯,我加了4號,不知道這是否會幫助,但值得一試。文檔可以在這裏找到。 http://mongoosejs.com/docs/models.html – user2263572
奇怪的是一個console.log語句修復了它。這可能是一個同步問題。 – user3073234