1

我在 mongo db 中创建了两个集合 bear 和 bears。我已经在 express 代码中定义了熊集合,但它正在访问熊数据。我现在很困惑。(bear 和 bears 具有相同的字段(first_name 和 last_name),但值不同。

这是我的代码

应用程序.js

router.get('/api/bears', (req, res) => {
   console.log("dfgdg",req.body)
    Bear.getBears((err, bear) => {
        if(err){
            throw err;
        }
        console.log("fdggfd",bear);
        res.json(bear);
    });
});

模型/bear.js

const mongoose = require('mongoose');


const bearSchema = mongoose.Schema({
    first_name:{
        type: String,
        required: true
    },
    last_name:{
        type: String,
        required: true
    },
    create_date:{
        type: Date,
        default: Date.now
    }
});

const Bear = module.exports = mongoose.model('Bear', bearSchema);


module.exports.getBears = (callback, limit) => {
    Bear.find(callback).limit(limit);
}

谁能知道为什么取熊数据而不是熊?

4

2 回答 2

2

您可以将第三个参数mongoose.model用于集合名称,例如

//following will fetch the from bear collection
const Bear = module.exports = mongoose.model('Bear', bearSchema, 'bear');


//following will fetch the from bears collection
const Bear = module.exports = mongoose.model('Bear', bearSchema, 'bears');

从文档

当没有传递集合参数时,Mongoose 使用模型名称。如果您不喜欢这种行为,请传递集合名称,使用 mongoose.pluralize(),或设置您的模式集合名称选项。

参考 https://mongoosejs.com/docs/api.html#mongoose_Mongoose-model

于 2018-09-21T12:41:59.840 回答
2

我已经尝试过您的代码并且遇到了同样的问题,我通过添加第三个参数来mongoose.model指定集合的​​名称来修复它

const Bear = module.exports = mongoose.model('Bear', bearSchema, 'bear');

祝你好运

于 2018-09-21T13:31:04.843 回答