我一直在使用mongoose一段时间,我目前仍然遇到这个问题:
我有一个动态的MongoDB数据库,除了日期之外,特定的集合没有相同的属性。
以下是示例:
"date":20160121,"RNB":11.575466025255562,"LPN":0.13705583756345177,"SST":0,"DN":0
但它可以有许多不同的属性,属性数量没有理论上限。
这是我到目前为止所尝试的:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bioChemSchema= new Schema({
date: {type: Number}
}, {strict: false});
var bcm= mongoose.model('bcm', bioChemSchema);
module.exports = bcm;
然而,对我的快递的GET请求不会返回任何内容。
以下是API代码:
var bCS= require('../models/bioChemSchema');
router.get('/bio', function(req, res, next) {
bCS.find({}, function(err, data){
if(err){
throw err;
}
res.json(data);
});
});
如果有任何帮助,我将不胜感激。
答案 0 :(得分:1)
万一有人仍然有这个问题,这是因为mongoose在模型名称之后将's'附加到集合中。因此,它一直在查询错误的集合:bcms
。这很难找到,因为我的所有其他集合都以数字结尾(因为某些原因,猫鼬在这种情况下不附加s。)并且工作正常。
这可以通过以下方式解决:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bioChemSchema= new Schema({
date: {type: Number}
}, { collection : 'bcm' }, {strict: false});
var bcm= mongoose.model('bcm', bioChemSchema);
module.exports = bcm;
答案 1 :(得分:0)
您的架构看起来很好但看起来您的API代码可能有拼写错误。您需要bCS
,然后尝试调用bCM.find()
,我认为它应该是:
var bCS= require('../models/bioChemSchema');
router.get('/bio', function(req, res, next) {
bCS.find({}, function(err, data){
if(err){
throw err;
}
res.json(data);
});
});