Mongoose 填充返回空数组

2023-12-10

我正在尝试使用 mongoose populate 函数,但作为响应,我得到了空数组,我已经看到了多个关于此的帖子

var MerchantSchema = new mongoose.Schema({
  packages: [{ $type: mongoose.Schema.Types.ObjectId, ref: 'Package'}]
},
{
    typeKey: '$type',
    timestamps: { createdAt: 'created_at', updatedAt: 'updated_at'}
});

module.exports = mongoose.model('Merchant', MerchantSchema);

这是我的基本模型的架构定义。

var 猫鼬 = require('猫鼬');

var PackageSchema = new mongoose.Schema({
    merchant_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Merchant' },
    name: String,
    original_price: Number,
    discounted_price: Number
});

module.exports = mongoose.model('Package', PackageSchema);

这就是我所指的模型。包模型和商家模型内的数据保存得很好。

商户文件

包装文件

但如果我使用填充函数查询,我将返回一个空字符串

Merchant
.findById( req.params.id, 'packages')
.populate('packages')
.exec(function (err, merchant) {
    if (err)
        next(err);
    else
        res.status(200).json(merchant);
});

Output:

{
  "_id": "579b3b2dc2e8d61c0ecd2731",
  "packages": []
}

谁能帮我

Update:

好吧,发生了一些非常奇怪的事情。如果我尝试使用以下内容填充包文档merchant_id它有效,但反之则不然。

Package
    .find()
    .populate('merchant_id')
    .exec(function (err, packages) {
        if(err)
            next(err);
        else
            res.status(200).json(packages);
    });

Output:

[
  {
    "_id": "579b3b51c2e8d61c0ecd2732",
    "name": "Hair + Nails",
    "original_price": 600,
    "discounted_price": 400,
    "merchant_id": {
      "_id": "579b3b2dc2e8d61c0ecd2731",
      "updated_at": "2016-07-29T11:17:37.474Z",
      "created_at": "2016-07-29T11:17:01.216Z",
      "name": "VLCC",
      "logo_image": "http://vlccwellness.com/India/wp-content/uploads/2015/09/logo1.png?",
      "cover_image": "http://image3.mouthshut.com/images/imagesp/925053993s.jpg?",
      "__v": 1,
      "tags": [],
      "packages": [
        "579b3b51c2e8d61c0ecd2732"
      ],
      "work_hours": {
        "opening_time": 1000,
        "closing_time": 2100,
        "holiday": "Sunday"
      },
      "information": {
        "description": "Lorem Ipsum",
        "gender": "Men",
        "services": [
          "Hair"
        ],

在商家架构中使用 type 而不是 $type。

var MerchantSchema = new mongoose.Schema({
  packages: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Package'}]
},
{
    typeKey: '$type',
    timestamps: { createdAt: 'created_at', updatedAt: 'updated_at'}
});

module.exports = mongoose.model('Merchant', MerchantSchema);

验证您的商家文档中是否存在针对软件包的 ObjectId 数组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose 填充返回空数组 的相关文章

  • 如何在 ionic 应用程序中使用 socket.io

    我正在使用 ionic 创建一个应用程序cordova and angular 我必须使用 IP 地址和端口号发出请求 到插座 我读过有关 socket io 的内容 我对如何安装感到困惑套接字 io以及如何与 Angular JS 和 N
  • 如何在nodejs中处理大量对象

    我想处理长度约为 100 000 的数组 而不会给 CPU 带来太多负载 我研究了流并偶然发现了 highlandjs 但我无法使其工作 我也尝试过使用 Promise 和分块处理 但它仍然给 CPU 带来很大的负载 如果需要 程序可能会很
  • 从另一台服务器读取 Node.js 中的大文件

    我有两台相互通信的服务器 Server1 向 Server2 请求文件的部分内容 并将收到的数据存储到一个文件中 Server2 应该接收每个请求并创建一个流管道传输数据 假设服务器2中存储的文件 目录 如下 bigfile gz bigf
  • 通过条件将 Firebase 云消息传递 (FCM) 发送到多个主题的正确语法是什么

    简而言之 我想使用 Google Cloud Functions 向订阅主题组合的设备发送通知 文档说 主题中的 TopicA 主题中的 TopicB 主题中的 TopicC 我试图做的是 var topicsConditions type
  • Microsoft SQL 数据库的 WebSocket 侦听器

    我目前正在开发一个项目 该项目必须使用 WebSockets 作为将数据传输到客户端的方式 基础设施看起来像这样 客户端 gt Web 服务器 gt Microsoft SQL 数据库 我想最理想的情况应该是这样的 客户端打开一个到服务器的
  • 如何更改 jasmine-node 异步规范的超时

    如何在不诉诸 running waitsFor 块的情况下通过此测试 it cannot change timeout function done request http localhost 3000 hello function err
  • 如何在 JavaScript 中获取 Application Insights 操作 id?

    我有一个用 javascript 编写的 Azure Function 应用程序 集成了 Application Insights const AppInsights require applicationinsights AppInsig
  • Mongodb启动时出错

    当我启动 mongodb 时 它立即崩溃并返回到正常的命令行 如果有帮助的话 我在 Mac 上运行 MEAN 堆栈 下面是错误 sudo mongod Sun Jun 1 21 01 01 728 initandlisten MongoDB
  • 使用 node.js 和 socket.io 阻止 CORS

    我最近开始学习node js和socket io 我遵循了 socket io 的简单教程 在我的计算机上运行时一切正常 但是 我决定将客户端部分上传到服务器进行测试 这就是问题开始的地方 我想在网络主机上运行聊天客户端 并在我的计算机或其
  • 从查询更新最后一个文档时遇到问题

    您好 我是 Mongodb 的新手 我目前正在尝试更新查询结果中的最后一个文档 但遇到问题 我知道如何使用获取最后一个文档 db collection find sort natural 1 limit 1 但我该如何更新呢 我尝试这样做
  • 如何在 Windows 上设置 Node.js 的工作目录?

    我刚刚安装了 Windows 版的 Node js 运行它真的是轻而易举 我想将它用作构建过程的一部分 将多个文件组合在一起 如下所示 settings var FILE ENCODING utf 8 EOL n DIST FILE PAT
  • 在express中设置静态javascript文件的内容类型

    我在用express使用 es6 模块提供带有 js 文件的页面 关于 es6 模块 https jakearchibald com 2017 es modules in browsers https jakearchibald com 2
  • 填充对象 ID 数组

    我的架构 var playlistSchema new Schema name type String require true videos type mongoose Schema Types ObjectId ref Video co
  • 在nodejs中从服务器下载.zip文件

    我正在使用 MEAN 其中我想允许用户从服务器下载 zip 文件 所以基本上我必须做以下事情 从某些数据创建 csv 文件 将该文件存储到某个目录中 将这些文件压缩为 zip 当用户单击该按钮时 应该下载并读取压缩文件 我已经完全达到了1
  • Javascript:同步到异步转换器库

    1 什么是更好的streamlinejs https github com Sage streamlinejs https github com Sage streamlinejs或叙述 http www neilmix com narra
  • HTTP 标头大小写

    我正在处理服务器 它不接受非大写的标头 不幸的是我不能用它做太多事情 var headers headers User Agent Mozilla 5 0 Windows NT 6 1 Win64 x64 AppleWebKit 537 3
  • Grunt:自定义任务开发指南

    我需要实现一个自定义的 Grunt 任务 但我完全不知道开发工作流程 如何开发自定义任务并在开发过程中使用 npm 模拟加载它 除了使用之外 还有其他分配自定义任务的方法吗 npm 我的意思是 我可以分发一个定义整个自定义 Grunt 任务
  • 在同一个 fd 上多次 createReadStream

    在上一个问题中 https stackoverflow com questions 13932967似乎从 node js 中的文件进行随机访问读取的唯一方法是使用fs createReadStream http nodejs org ap
  • 使用 mongoDB 插入子文档

    我收集了以下文件 id 2 workspace name 1 widgets name 2 widgets name 3 widgets name 4 widgets 我怎样才能插入 id 1 blabla blabla 在 小部件 中的
  • express 和 socket.io - 声明和启动服务器

    我一直不明白下面的代码是如何等效的 Code 1 var app require express var server require http Server app var io require socket io listen serv

随机推荐