Mongoose:架构中的新属性和更改属性

时间:2016-07-13 18:38:51

标签: node.js mongodb mongoose

我一直在使用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);
  });
});

如果有任何帮助,我将不胜感激。

2 个答案:

答案 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);
  });
});
相关问题