我已经用Express和Mongoose设置了MongoDB,以便与我的Angular App通信。
我目前遇到以下问题:
到目前为止,有3种不同的收藏集。当我尝试在其中2个上使用Collection.find({})
时,效果很好,但是当我尝试获取第3个的条目时,我总是只会得到一个空数组(“ []”永远都不会未定义,或者总是空括号)。
当我尝试在MongoDB shell cli中获取条目时,使用完全相同的命令可以正常工作。
这是我无法正常工作的代码(规范不是问题({name:1,_id:0}),没有它,我也尝试了很多不同的方式):
app.get('/api/retrieveCompany', async (req, res) => {
Company.find({},{name: 1, _id: 0}, function(err, companies) {
if(err) {
res.status(500).json('Error')
} else {
console.log(companies)
res.status(200).json(companies)
}
})
})
可以正常运行的方法的代码:
app.get('/api/retrieveContent', async (req, res) => {
Content.find({}, function(err, contents) {
if(err) {
res.status(500).json('Error')
} else {
console.log(contents)
res.status(200).json(contents)
}
})
})
用于该方法的其他代码:
猫鼬模式(公司):
const mongoose = require('mongoose')
const CompanySchema = new mongoose.Schema({
name: String,
description: String,
boss: String,
})
const Company = mongoose.model('Company', CompanySchema)
module.exports = Company
启动:
mongoose.connect('mongodb://localhost:27017/angulardb', { useNewUrlParser: true })
.then((err) => console.log('Mongoose up'))
const User = require('./models/users')
const Content = require('./models/content')
const Company = require('./models/company')
猫鼬模式(内容)(仅用于比较):
const mongoose = require('mongoose')
const ContentSchema = new mongoose.Schema({
subject: String,
customer: String,
task: String,
date: Date,
inCharge: String,
comment: [String],
})
const Content = mongoose.model('Content', ContentSchema)
module.exports = Content
我从MongoDB Shell CLI中获得的响应:
> db.company.find({},{name: 1, _id: 0})
{ "name" : "IT Solutions" }
{ "name" : "Microsoft" }
{ "name" : "Company15" }
{ "name" : "New Company" }
答案 0 :(得分:1)
猫鼬文档
默认情况下,猫鼬通过传递模型来产生集合名称 名称为utils.toCollectionName方法。此方法将 名称。如果您需要其他名称,请设置此选项 集合。
但是我看到您的收藏名称是单数形式。您可以重命名您的收藏集或使用它来使用其他收藏集名称。
const CompanySchema = new mongoose.Schema({
name: String,
description: String,
boss: String,
}, { collection: 'company' })
希望这对您有所帮助。