繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM