我在mongo db中创建了Bear和Bears两个集合。我已经在快速代码中定义了Bear集合,但是它正在访问Bears数据。我现在很困惑。 (熊和熊具有相同的字段(名字和姓氏),但值不同。
这是我的代码
app.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);
});
});
models / 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);
}
谁能知道为什么提取熊数据而不是熊吗?
答案 0 :(得分: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
答案 1 :(得分:2)
我已经尝试过您的代码,并且遇到了同样的问题,我通过在mongoose.model
中添加第三个参数来指定集合的名称来解决它
const Bear = module.exports = mongoose.model('Bear', bearSchema, 'bear');
祝你好运