Mongoose 不会从 JSON 数组创建子文档

2024-02-16

我正在尝试将包含第一级数据和数组的 JSON 对象写入 MongoDB。

相反,发生的情况是所有第一级数据都被存储,但数组中包含的任何内容都没有存储。当记录服务器接收到的数据时,我看到了整个对象,这让我相信我的 Mongoose 代码有问题。

例如,如果我发送这样的内容:

issueId: "test1",
issueTitle: "testtest",
rows: [
  {order:1,data: [object]},
  {order:2,data: [object]},
]

仅存储以下内容:

issueId: "test1",
issueTitle: "testtest",
lastUpdated: Date,

我有以下 Mongo 模型:

//model.js
var mongoose = require('mongoose');

var model = mongoose.Schema({

  issueId     : String,
  issueTitle  : String,
  lastUpdated : {type: Date, default : Date.now},

  rows  : [{
    order   : Number,
    data      : [
      {
        title   : String,
        text    : String,
        link    : String,
      }
    ]
  }]

});

module.exports = mongoose.model('Model', model);

还有路由代码,我认为问题可能是:

//routes.js
const mongoose = require('mongoose');
const Model = require('./model.js');
...
app.post('/api/data/update', function(req, res) {
  let theData = req.body.dataToInsert;

  console.log(JSON.stringify(theData,null,4));

  Model.findOneAndUpdate(
    {issueId : theData.issueId},
    {theData},
    {upsert: true},
    function(err,doc){
      if(err) throw err;
      console.log(doc);
  });
});

另外,这是 Angular 控制器存储数据的部分。我不认为这里有什么问题。

pushToServer = function() {
    $http.post('/api/data/update',{
        dataToInsert : $scope.dataObject,
    }).then(function successCallback(res){
        console.log("all good", JSON.stringify(res,null,3));
    }, function errorCallback(res){
        console.log("arg" + res);
    });
  }

看一下mongoose FAQ中的第一个问题:http://mongoosejs.com/docs/faq.html http://mongoosejs.com/docs/faq.html

Mongoose 不会为数组索引创建 getter/setter;没有它们,猫鼬永远不会收到更改通知,因此不知道保留新值。解决方法是使用 Mongoose >= 3.2.0 中可用的 MongooseArray#set。

// query the document you want to update
// set the individual indexes you want to update
// save the document
doc.array.set(3, 'changed');
doc.save();

EDIT

我认为这可以更新所有行。我很想知道它是否有效。

let rowQueries = [];
theData.rows.forEach(row => {
    let query = Model.findOneAndUpdate({
        issueId: theData.issueId,
        'row._id': row._id
    }, {
        $set: {
            'row.$': row
        }
    });
    rowQueries.push(query.exec());
});

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

Mongoose 不会从 JSON 数组创建子文档 的相关文章

  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • 使用谷歌分析处理带有哈希#的网址

    我正在使用 javascript 客户端 mvc 开发一个 js 单页 Web 应用程序 在本例中为 angular js 我在网站上添加了谷歌分析 但从目前我所看到的 至少是实时的 来看 谷歌没有考虑哈希后的 uri 部分 那就是我有一个
  • 为什么此类方法中的“this”未定义?

    我试图搜索似乎整个互联网 但我仍然对我为微服务编写的 JS 类的问题感到烦恼 仍在学习中 因此 我尝试在实例化对象上调用类方法 根据我的知识和我的 我认为是错误的 单元测试 它应该可以工作 好吧 我将从我收到的错误开始 GET api us
  • 使用Nodejs、Express和AngularJS在浏览器中显示IP

    我正在学习 Nodejs 和 ExpressJS 我正在尝试使用 ExpressJS 和 2 个节点模块 请求IP https www npmjs com package request ip and geoip2 https www np
  • 让 babel 排除测试文件

    在我的构建步骤中 我使用 babel 将代码转译为 es5 从src to dist 如何让它排除以以下结尾的文件 test js 包 json scripts build babel src out dir dist babelrc pr
  • 如何在 AngularJS 中刷新/使 $resource 缓存失效

    我有一个简单的 User resource 它使用默认的 http 缓存实现 如下所示 factory User function resource return resource endpoint user current project
  • 在 Google App Engine 上连接 Mongoose

    我已在 Google App Engine 上成功部署了自定义 Node js 应用程序 但是 我在启动应用程序时遇到问题 因为猫鼬在尝试连接时超时 令人沮丧的是 猫鼬在我的本地计算机上以完全相同的参数连接得很好 我的 MongoDb UR
  • 如何使角度表单只读并可使用编辑按钮进行编辑?

    有没有办法让整个 Angular 表单只读 然后在单击编辑时可编辑 您可以按照当前答案 评论中的建议单独禁用所有表单元素 也可以将所有表单元素包装在 fieldset 更多信息 https developer mozilla org en
  • 如何在自动完成表单的脚本中获取 json 文件的多个值

    拜托 我是 php 初学者 我想使用像这样的 json 编码的数组 http stegonia fr autocomplete index2 php http stegonia fr autocomplete index2 php 您可以看
  • 将相同的多个对象推送到多个数组中

    这是后续使3个数组相互对应 第一个是对象名称 https stackoverflow com questions 57564488 make 3 arrays correspond to each other with the first
  • 如何在 Sequelize 现有模型中添加列?

    我使用此命令添加了模型和迁移文件 node modules bin sequelize model generate name User attributes firstName string lastName string email s
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • json文件格式的升级路径

    我们将 Java 应用程序的用户首选项存储在 JSON 文件中 使用Jackson http jackson codehaus org 随着我们继续开发该应用程序 我们将添加首选项 重命名首选项并删除过时的首选项 当用户将应用程序升级到下一
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • MongoDB:计算数组中的项目数

    我有一个集合 其中集合中的每个文档都有一个名为的数组foo包含一组嵌入文档 目前 MongoDB shell 中是否有一种简单的方法来计算其中有多少个实例foo 就像是 db mycollection foos count or db my
  • 为什么 AngularJS 指令(属性等)在 WebStorm 8 中显示为“无效”?

    我几个小时前刚刚安装了 WebStorm 8 我一直在写一些 AngularJS 的东西 但我有一个相当烦人的小问题 AngularJS 插件似乎只能部分工作 每当我输入 ng 时 我都会收到一个智能感知弹出窗口 其中显示所有各种 ng 属
  • 具有客户端/服务器节点设置的 Webpack?

    我正在尝试为带有节点后端服务器的 Angular2 应用程序设置基于 webpack 的流程 经过几个小时的努力 我已经成功地让客户端愉快地构建了 但我现在不知道如何集成我的服务器构建 我的服务器使用生成器 因此必须以 ES6 为目标 并且
  • React Native / Laravel - 向 API 发送请求

    我正在实现一个移动应用程序 它使用 Laravel 作为 API 与数据库进行通信 我想将用户名和密码从我的 React Native 应用程序发送到 Laravel 我正在使用以下代码来执行此操作 fetch mysite com api
  • 来自 ajax 的 Bootstrap 表 json

    我有 ajax 和 bootstrap 表的问题 我有一个 ajax JSON 我用这个方法调用 document ready function ajax url php process php method fetchdata dataT
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的

随机推荐

  • Visual Studio 2010 中的 2008 年商业智能项目(SSIS 和 SSRS)

    我必须安装什么才能从 Visual Studio 2010 创建 SQL 商业智能项目 例如 Report Services 报表和集成服务包 我是否能够创建同时适用于 SQL 2005 和 SQL 2008 的解决方案 我尝试在客户端上安
  • 如何返回最早日期的记录?

    我需要返回每个不同学生 ID 的第一条记录 在我的示例代码中 我有一个记录在同一日期发生了两个事件 而另一名学生在不同日期发生了多个事件 我需要选择最早的日期 如果同一日期发生多个事件 则将最早的事件 ID 作为下一个标准 有什么好的方法可
  • Google 地图 api - 将标记捕捉到最近的道路

    我正在尝试将坐标捕捉到最近的道路 但我仍然无法以简单的方式做到这一点 这是简单的代码 如何改进它 结果将在路上标记
  • 如何仅在 Nuxt.js 中加载客户端资源

    我正在尝试在 Nuxt js 之上使用 Tone js 构建一个应用程序 Tone js 需要浏览器的 Web Audio API 并且当 Nuxt 在服务器端渲染内容时 我的构建不断失败 Nuxt 在中解决了这个问题插件文档 https
  • 消除 Maven POM 冗余

    我有一个具有以下配置的父 POM
  • 蓝牙 LE (4.0) 有多少个中央设备可以连接到外围设备?

    我想知道一个外围设备可以同时连接多少个中心 我的问题是针对 iOS 的 但我希望得到大家的答复 有几件事 我知道中央设备 而不是外围设备 旨在处理多个连接 然而 出于各种原因 我想尝试相反的设置 来自蓝牙核心规范 V4 外围角色针对支持单一
  • django-导入-导出外部管理

    我正在尝试使用 django import export 实现简单的 xls 文件导入并保存到模型 不幸的是 这些文档仅涵盖管理集成 我被困在我的示例代码中 class UploadFileForm forms Form file form
  • 如何从 Core Data 的持久存储中删除所有对象?

    我的应用程序中有核心数据 因此 我获取一个 XML 文件 将数据解析为模型对象并将它们插入到核心数据中 它们保存在持久存储中 当我重新启动应用程序时可以访问它们 但是 我希望能够随意刷新持久存储中的数据 因此我需要首先从存储中删除现有对象
  • 如何使用 client_credentials 从资源服务器访问另一个 oauth2 资源?

    我想使用 client credentials 从反应性资源服务器访问另一个受 oauth2 保护的资源 我使用颁发的令牌访问资源服务器的部分正在工作 但没有使用 webclient 调用其他资源 使用 UnAuthenticatedSer
  • 如何在 Eiffel 中格式化 DOUBLE 以仅打印两位小数?

    在埃菲尔铁塔中 你如何做到这一点 118 1999999999999 打印到 118 20 在其他语言中 这只是 printf 的问题 但在 Eiffel 中似乎没有办法轻松做到这一点 您应该使用类 FORMAT DOUBLE local
  • 对不同的 Android 应用程序使用一个 Google 地图 API 密钥

    我刚刚生成了要在我的 Android 应用程序中使用的 Google 地图 API 密钥 我必须提供应用程序的 SHA 1 指纹和包名称 它看起来像这样 BB 0D AC 74 D3 21 E1 43 67 71 9B 62 91 AF A
  • 计算两个日期之间的星期几小时对

    考虑以下列表星期几小时配对24H format Mon 9 23 Thu 12 13 14 Tue 11 12 14 Wed 11 12 13 14 Fri 13 Sat Sun 和两个时间点 例如 Start datetime datet
  • ffmpeg 给出错误选项 movflags not find

    在 Ubuntu 12 04 LTS 中我使用过 movflags frag keyframe empty moov在我的 ffmpeg 命令中 ffmpeg i http filesbe vocativ internal net 03 4
  • 处理 appwidget 的多个实例

    我有一个配置活动 一个大型小部件提供程序和一个小型小部件提供程序 在配置活动中 我在共享首选项中保存了一些值 我从大大小小的应用程序小部件提供商那里获得了这些共享的偏好 我无法为应用程序小部件提供唯一的 ID 并且每次从配置活动转到应用程序
  • D7 需要苹果风格的“等待”动画

    有谁知道与 Delphi 7 一起使用的 Apple 风格 等待 动画 VCL 组件吗 谢谢 不知道当前的 Apple 外观如何 但这里有一个免费的在线服务来创建 Ajax 加载 gif 文件 http www ajaxload info
  • Spark 构建路径与不兼容的 Scala 版本 (2.10.0) 交叉编译

    当我尝试在 scala IDE 中执行 Spark sql 代码时 出现以下错误 有人可以帮我解决这个问题吗 spark build path is cross compiled with an incompatible version o
  • 在 AngularJS 中只注册一次事件监听器

    我正在将一个事件从我的导航栏控制器广播到另一个控制器 但是如果我多次初始化控制器 当我在应用程序中前后移动时 则在我的控制器上执行的函数 on事件运行多次 因为它已注册多次 rootScope on submitBookingDialog
  • 如何指定DbContext要使用的表的名称

    这是来自的后续问题我之前的问题 https stackoverflow com questions 26404786 dbcontext doesnt give any data 我的印象是 如果数据库中有多个表 则该表的名称DbSet变量
  • 我在哪里可以找到将任意布尔表达式转换为合取或析取范式的方法?

    我写过一个小应用程序 https bitbucket org BillyONeal pevfind overview将表达式解析为抽象语法树 现在 我对表达式使用一系列启发式方法来决定如何最好地评估查询 不幸的是 有些例子使查询计划变得非常
  • Mongoose 不会从 JSON 数组创建子文档

    我正在尝试将包含第一级数据和数组的 JSON 对象写入 MongoDB 相反 发生的情况是所有第一级数据都被存储 但数组中包含的任何内容都没有存储 当记录服务器接收到的数据时 我看到了整个对象 这让我相信我的 Mongoose 代码有问题