[英]Collection.find() only works on certain Collections
我已经用Express和Mongoose设置了一个MongoDB与我的Angular应用进行通信。
我目前遇到以下问题:
到目前为止,有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" }
根据猫鼬的文档,
默认情况下,猫鼬通过将模型名称传递给utils.toCollectionName方法来生成集合名称。 此方法将名称复数。 如果您的集合需要其他名称,请设置此选项。
但是我看到您的收藏名称是单数形式。 您可以重命名您的收藏集或使用它来使用其他收藏集名称。
const CompanySchema = new mongoose.Schema({
name: String,
description: String,
boss: String,
}, { collection: 'company' })
希望这对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.