【发布时间】:2019-04-11 00:00:03
【问题描述】:
我已经使用 Express 和 Mongoose 设置了一个 MongoDB 来与我的 Angular 应用程序通信。
我目前遇到以下问题:
到目前为止,共有 3 个不同的集合。当我尝试在其中 2 个上使用 Collection.find({}) 时,它工作得非常好,但是当我尝试获取第三个的条目时,我总是得到一个空数组(“[]”永远不会未定义或某些东西总是空括号)。
当我尝试在 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)
}
})
})
用于该方法的其余代码:
Mongoose 架构(公司):
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')
Mongoose Schema(内容)(仅供比较):
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" }
【问题讨论】:
-
“company”集合在哪里出现空结果?
-
是的。不是空结果,而是一个没有任何内容的数组。
-
您是否尝试在没有投影的情况下找到所有公司?
-
是的,我做到了,但没有可能的替代方案(至少据我所知)确实有效。甚至不只是为了 Company.find({}, function....
标签: javascript node.js angular mongodb mongoose