mongodb只有一些集合返回数据,而有些则没有,尽管它们使用nodeJS在同一数据库中

时间:2019-01-12 08:33:19

标签: node.js mongodb cloud

我在同一数据库的mongodb云上创建了几个集合。使用nodeJS,只有一些集合返回值,而其他集合(不是空白[])。没有错误消息或异常。 我在mongodb shell上进行了测试,它显示了所有集合中的数据。

我使用此示例创建了我的项目。您可以从此处获取完整的代码。 http://programmerblog.net/nodejs-mongodb-rest-api/

这是我在应用,路由器,模型,控制器js文件中的代码:

app.js

...
var  mongodburi = "mongodb+srv://myID:myPassword@cluster0-qabk1.mongodb.net/onlinestore";
.....
var routes = require('./restapi/routes/productRoutes');

productRoutes.js

...
 var product = require('../controllers/productController');
app.route('/products')
    .get(product.products)
----

productModel.js

    'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Schema = new Schema({
  product_name: { type: String, Required:  'Product name cannot be left blank.' },
  price:    { type: String,     Required:  'Product price cannot be left blank.'},
  category: { type: String ,    Required:  'Product category cannot be left blank'}
});
module.exports = mongoose.model('products', Schema);

productController.js

'use strict';

var mongoose = require('mongoose'),
    Product = mongoose.model('products');

exports.products = function(req, res) {
  Product.find({}, function(err, product) {
    if (err)
      res.send(err);
    res.json(product);
  });
};

集合1:产品-我正在获取价值 集合2:techinfo-我没有得到价值 集合3:测试-我正在获取值

我以相同的方式创建了所有这些集合。 我只是在2个地方用代码更改集合名称: 1号行module.exports = mongoose.model(' techinfo ',Schema)处的productModel.js; 第二名:Product行中的productController.js = mongoose.model(' techinfo ');

为什么它适用于产品和测试,而不适用于techinfo馆藏?(我什至尝试创建更多馆藏,但不一致)。

1 个答案:

答案 0 :(得分:0)

不敢相信这个框架可以做到这一点。 当您不传递集合名称时,默认情况下,它将在您传递的模型名称的末尾添加“ s”。这就是为什么我能够从产品和测试集合中获取数据,而不是从techinfo中获取数据的原因。

这是我最初所做的。这就是为什么它默认添加其他“ s”的原因。

module.exports = mongoose.model('techinfo', techInfoSchema);

如果您要调用特定的收藏夹,请像这样传递它:

module.exports = mongoose.model('techinfo', techInfoSchema, 'techinfo')

更多信息,请访问: Why does mongoose always add an s to the end of my collection name