mongoose 从集合中获取所有返回一个空列表

Posted

技术标签:

【中文标题】mongoose 从集合中获取所有返回一个空列表【英文标题】:mongoose getting all from collection returns back an empty list 【发布时间】:2019-02-07 01:47:55 【问题描述】:

我在我的项目中创建了一个新集合,并遵循相同的语法来检索所有用户以从该集合中检索所有用户,但由于某种原因我最终得到一个空数组或列表。有人可以让我知道为什么会这样,因为我对 MongoDB 还很陌生。下面是我的代码。当我在查询之前放置一个 console.log 并调用它时,正在调用该服务。将数据保存到数据库也可以正常工作,只是 getAll 我在做这件事时遇到了麻烦。该集合只有一个字段,即帐号。

在我的服务中

async function getAll() 
    return await accountdb.find();

控制器

function getAll(req, res, next) 
    accountdbService.getAll()
        .then(account => res.json(account))
        .catch(err => next(err));

在前端我有

 getAll() 
    return this.http.get<account[]>(`$environment.apiUrl/account`);
  

最后在组件中

ngOnInit() 
    this.loadAllAccounts();
  

  private loadAllAccounts() 
    this.AccountService.getAll().pipe(first()).subscribe(account => 
      this.accounts = account;
      console.log(this.accounts);
    );
    console.log(this.accounts);

调用 api 时的邮递员响应:

[
    
        "_id": "5b89e647e1e6540ac28d68b1",
        "logDataInput": "admin changed the status of user test2 to manager",
        "__v": 0,
        "id": "5b89e647e1e6540ac28d68b1"
    ,
    
        "_id": "5b89e648e1e6540ac28d68b2",
        "logDataInput": "admin changed the status of user test2 to User",
        "__v": 0,
        "id": "5b89e648e1e6540ac28d68b2"
    ,
    
        "_id": "5b8a2a6b16206e0cae8c71ba",
        "logDataInput": "admin deactivated user test2",
        "__v": 0,
        "id": "5b8a2a6b16206e0cae8c71ba"
    
]

network tool 2 api calls picture

【问题讨论】:

当你从 Postman 访问这个 API 时会发生什么?这会返回所需的数据吗? 嗨,首先感谢您的帮助,其次我无法让邮递员工作,它需要基本的身份验证,我无法工作 你不能像在 Angular 中那样只发送基本的身份验证头吗? 没错。你可以在 Postman 上做到这一点。 您似乎在服务中使用async/await,但随后仍从控制器调用.then 【参考方案1】:

看起来您在 getAll 函数的响应中发送了错误的变量。

    .then(logTrack => res.json(account)

改成

    .then(logTrack => res.json(logTrack)

【讨论】:

感谢您的回复,这不是我不小心放在这里的问题。【参考方案2】:

原因是getAll()函数是异步的,也就是说后面的代码可能在subscribe函数之前执行。

看起来您的数组正在设置中,但是通过在订阅之外检查它,您正在检查它之前它已被设置。

【讨论】:

谢谢你是对的,我检查了另一个 api,就是这样。

以上是关于mongoose 从集合中获取所有返回一个空列表的主要内容,如果未能解决你的问题,请参考以下文章

从 Mongoose 获取项目列表并返回结果

获取一个空数组 Mongoose

获取一个空数组 Mongoose

Mongoose聚合从另一个集合中获取多条记录中的喜欢总和

为什么在mongoose中使用find方法时console.log返回空数组?

如何在一个获取请求中返回多个 Mongoose 集合?