Collection.find()仅适用于某些Collections

时间:2018-11-07 14:28:19

标签: javascript node.js angular mongodb mongoose

我已经用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" }

1 个答案:

答案 0 :(得分:1)

猫鼬文档

  

默认情况下,猫鼬通过传递模型来产生集合名称   名称为utils.toCollectionName方法。此方法将   名称。如果您需要其他名称,请设置此选项   集合。

但是我看到您的收藏名称是单数形式。您可以重命名您的收藏集或使用它来使用其他收藏集名称。

const CompanySchema = new mongoose.Schema({
    name: String,
    description: String,
    boss: String,
}, { collection: 'company' })

希望这对您有所帮助。