Nodejs Mongodb更新多个集合

2024-03-14

在 mongodb 中,现在有两个集合:事件和包。所以基本上模型看起来像这样

事件模型

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;

const bcrypt = require('bcrypt-nodejs');

const EventSchema = new Schema({
  _id: mongoose.Schema.Types.ObjectId,
  eventname: {
    type: String,
    required : true,
  },
  eventdesc: {
    type: String,
    required : true,
  },
  createdAt: {
    type: Date,
    default: Date.now
  },
  updatedAt: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model('Event', EventSchema);

封装模型看起来像这样

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;

const bcrypt = require('bcrypt-nodejs');

const PackageSchema = new Schema({
  _id: mongoose.Schema.Types.ObjectId,
  eventpackages: {
    type: Object,
    required : false,
  },
  event: { 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'Event'
  },
  createdAt: {
    type: Date,
    default: Date.now
  },
  updatedAt: {
    type: Date,
    default: Date.now
  }
});

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

在这里,我尝试更新一个事件,因此当事件更新时,包也会更新。所以在nodejs中我做了这样的

    var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');


/* UPDATE EVENT */
router.put('/:id', function(req, res, next) {
  upload(req, res, function(err) {
    let EventData = {
      eventname       : req.body.eventname,
      eventdesc       : req.body.eventdesc, 
    }

    let EventPackages = {
      eventpackages : req.body.sections,
    }
    Event.findByIdAndUpdate(req.params.id, EventData, function (err, post) {
      if (err) return next(err);

      Package.findAndModify({
        query: { event: req.params.id },
        update: { $inc: { EventPackages } },
        new: true, 
        upsert: true 
      })
        res.json(post);
    });
  });
});



module.exports = router;

但它根本不起作用。如果我删除包更新的代码,它将适用于事件。

那么有人可以告诉我如何进行这项工作,以便我可以一次更新多个集合。


你可以试试这个

    var query = {
              'event': req.params.id
              };
    var dataToUpdate = {
       $set: {
          ///
       }
};
Package.updateMany(query, datatoUpdate, function(err, result) {
       if (err) return handleError(err);

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

Nodejs Mongodb更新多个集合 的相关文章

  • node.js 安装向导提前结束

    我无法安装 node js 0 8 9 我是通过安装向导完成的 每次安装结束时我都会收到消息 Node js 安装向导提前结束 会是什么呢 谢谢 这可能会对将来的某人有所帮助 我从安装程序中收到类似的消息 发现我可以转到命令提示符并使用命令
  • 打字稿:“找不到模块”且输入有效

    我刚刚使用 typescript 启动了一个新的 Nodejs 项目 我安装了打字 https github com typings typings https github com typings typings 并使用它来安装 Node
  • MongoDB 仅插入唯一电子邮件条件不起作用

    在我的猫鼬模式中 我有以下两个字段 username type String required true user name required trim true unique true email type String required
  • Node.js 每个用户一个会话

    如何防止我的用户同时从两个设备登录我的系统 因此 如果用户从计算机登录 当他从不同的计算机登录时 首先会自动关闭会话 不需要使其实时 我使用node js express js mongoose passport connect mongo
  • 由于预发布,Node 应用程序无法运行

    即使安装成功 我也会安装无效的软件包 顺便说一句 这个问题与答案相关 关于版本控制的问题 https stackoverflow com questions 27628153 npm versioning how does this edg
  • Express URIError:无法解码参数

    当请求的参数包含时 我将 next js 与自定义 Express 服务器一起使用 它会导致此错误 URIError Failed to decode param faker at decodeURIComponent
  • 如何修复超出最大调用堆栈大小

    有一个 MERN Firebase 应用程序并收到此错误和一堆 atdeepExtend deepCopy ts 71 RangeError Maximum call stack size exceeded getApps as apps
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • 为什么changeResourceRecordSets没有被授权访问此资源?

    我正在尝试在 Route 53 中创建一条别名类型的新记录 以告诉 Route 53 起诉 CloudFront 来为该站点提供服务 我正在尝试使用以下代码来执行此操作 let options ChangeBatch Changes Act
  • 让 babel 排除测试文件

    在我的构建步骤中 我使用 babel 将代码转译为 es5 从src to dist 如何让它排除以以下结尾的文件 test js 包 json scripts build babel src out dir dist babelrc pr
  • 节点:以编程方式检查包的最新版本

    我希望我的节点包 在 npm 上发布 在新版本可用时提醒用户 如何以编程方式检查已发布软件包的最新版本并将其与当前版本进行比较 Thanks 您可以结合npmview https npmjs com package npmview 用于获取
  • 在 Google App Engine 上连接 Mongoose

    我已在 Google App Engine 上成功部署了自定义 Node js 应用程序 但是 我在启动应用程序时遇到问题 因为猫鼬在尝试连接时超时 令人沮丧的是 猫鼬在我的本地计算机上以完全相同的参数连接得很好 我的 MongoDb UR
  • 检查用户是否从后端 Firebase 身份验证登录

    在我的前端 用户使用 Firebase 身份验证浏览器登录 那部分工作得很好 除了 Firebase 后端之外 我还有提供其他内容的 NodeJS 后端 但是 我需要仅向经过身份验证的用户提供内容 我的问题是 有没有办法让我的 NodeJS
  • 猫鼬和部分选择/更新

    在node js中 当我使用Mongoose时 是否可以只获取大对象的部分值 是否可以只更新部分值 要仅获取某些字段 请将字段名称字符串作为第二个参数传递给find Include the first and last properties
  • 如何使用 Passport /Facebook 策略/验证 Supertest 请求?

    我使用 Passport js 进行身份验证 Facebook 策略 并使用 Mocha 和 Supertest 进行测试 如何使用 Supertest for Facebook 策略创建会话并发出经过身份验证的请求 这是用户未登录时的示例
  • 如何在 Sequelize 现有模型中添加列?

    我使用此命令添加了模型和迁移文件 node modules bin sequelize model generate name User attributes firstName string lastName string email s
  • 用于全文搜索和 2 亿多条记录的数据库

    我即将创建一个包含至少 2 亿个条目的庞大数据库 数据库需要可使用全文进行搜索 并且速度应该很快 我的数据库从许多不同的数据源获取数据 我需要定期导入新的或更新的数据 将我的所有数据存储在像 mysql 这样的关系数据库中 然后创建一个 n
  • 为 Promise 编写循环的正确方法。

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

    我在聚合聚合期间遇到了重塑文档的问题 基本上我想根据条目的类型将条目推送到字段中 我的结构如下 id P1 entities type A val X type B val X type A val Y 我想 unwind 和 projec
  • MongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时

    当我运行我的应用程序时npm run seeder然后我面临这个错误 我仔细检查了我的数据库连接 没问题 另外 我检查了我的 ordermodels 文件也没有问题 我用过MongoDB的compass没有任何问题 我不知道为什么显示buf

随机推荐

  • 使用 CSS 3D 变换从 DOM 对象接收变换后的鼠标事件数据

    目前 JavaScript 鼠标事件中是否有任何数据可以让我轻松查找或计算相对于转换元素的 3D 空间的鼠标位置 为了直观地说明 左边是没有 3d 矩阵的 div 右边是经过 3d 变换的 div o是鼠标事件的起源 o gt o 在下面的
  • Python - Pandas 删除 Excel 中的特定行/列

    我有以下 Excel 文件 我想清理特定的行 列 以便我可以进一步处理该文件 我已经尝试过这个 但我没有设法删除任何空白行 我只能设法从包含数据的行中修剪掉 在这里 我试图只保存第三行及以后的数据 xl pd ExcelFile MRD x
  • TemplateInputException:解析模板时出错 ****,模板可能不存在

    我正在使用 Spring Boot 和 mySql 数据库 我正在尝试通过团队表过滤搜索 最初这个表是一个 thymeleaf 表 参见我的相关 SO 问题 但在用尽互联网上可用的所有资源后 没有成功 我决定以不同的方式实现搜索 我发现了一
  • 通过 C# 和 OleDb 将行插入 Excel 电子表格

    我需要以编程方式将一行多次插入 Excel 电子表格中 我需要实际上插入一个新行并且不插入数据 也就是说 我实际上需要将所有其他行向下移动一位 我目前正在使用 OleDB 插入数据本身 如下所示 Note I have missed som
  • 写组合缓冲区位于哪里? x86

    Write Combine 缓冲区在物理上是如何连接的 我见过说明许多变体的框图 L1 和内存控制器之间 CPU 的存储缓冲区和内存控制器之间 CPU 的 AGU 和 或存储单元之间 它依赖于微架构吗 写缓冲区在不同的处理器中可以有不同的目
  • 如何将 iPhone 应用程序从 Xcode 部署到真实的 iPhone 设备?

    如果没有 99 美元的 Apple 证书 如何将 iPhone 应用程序从 Xcode 部署到真实的 iPhone 设备 I ve used a mix of two howtos Jason s https stackoverflow c
  • Couchbase 的 Twisted API 无法与 Python Tornado 一起使用

    我正在尝试使用 Couchbase 4 0 开发人员预览版运行 Tornado 服务器 import tornado web import tornado httpserver import tornado options import t
  • Apache HttpClient 和自定义端口

    我正在使用 Apache HttpClient 4 它工作正常 唯一不起作用的是自定义端口 似乎提取了根目录而忽略了端口 HttpPost post new HttpPost http myserver com 50000 HttpResp
  • 为什么通过translate3d改变div大小时会出现边距?

    当我更改 div 大小时 块之间会出现缩进 div class test2 test2 p hello p p hello p div 帮我看看怎么去掉 container perspective 600px transform style
  • 尝试使用 Selenium 循环配置文件列表

    我试图循环遍历所有个人资料并将人员姓名 工作资料和位置存储在列表中 这是我所在的 LinkedIn 屏幕的屏幕截图 这是我必须循环的 li html 标签 li class reusable search result container
  • 如何为多个AWS EC2实例设置共享持久存储?

    我有一项托管在 Amazon Web Services 上的服务 我有多个 EC2 实例运行着完全相同的设置和数据 由弹性负载均衡器和扩展组管理 这些实例是运行基于 PHP 的 Web 应用程序的 Web 服务器 因此 目前每个实例上都放置
  • 包含主 *.tex 文件的超级/子目录中的 *.sty 文件

    我想通过 git 与许多其他人分享乳胶文档 因此 我们决定将每个人的 Latex 安装中不存在的所有特殊 sty 文件放入资源目录中 如果这个目录是超级目录 那就太酷了 实际工作目录的 我究竟如何导入这些样式文件 重要的是 即使这些远程样式
  • 可用于测试 JavaScript 验证脚本的电子邮件地址列表

    有人有我可以用来测试 JS 地址验证脚本的电子邮件地址列表吗 我正在寻找尽可能完整的列表来测试最常见的边缘情况 如果不是所有情况 根据 RFC2822 有效的示例 电子邮件受保护 cdn cgi l email protection 电子邮
  • 有什么方法可以将 Rstudio 中的颜色更改为默认选项以外的颜色吗?

    有没有办法改变配色方案 for Rstudio 它配备了6 or 7默认 预先打包的主题 我想知道是否有任何东西可以让我自定义这些或一些可以让我自己制作的插件 有一种更快的方法可以解决这个问题 而且 100 可行 使用您最喜欢的编辑器主题打
  • 值类型后面的问号的用途是什么(例如:int?myVariable)?

    通常问号的主要用途是用于条件 x yes no 但我看到了它的另一种用途 但找不到这种用途的解释 例如 运算符 public int myProperty get set 这意味着所讨论的值类型是可空类型 https msdn micros
  • 如何通过我的切换帧函数将 Tkinter 条目值从一个帧传递到另一个帧

    我的 Tkinter 应用程序添加了笔记本 在笔记本内我想使用按钮切换框架 实现了笔记本开关和框架开关 当我单击 确定 按钮时 我想将笔记本的一帧输入输入到另一帧enter code here 我尝试将值作为框架类初始化的参数传递 将输入字
  • 淡入/淡出 ScrollView Swift UI

    当用户滚动文本时 是否可以淡入 淡出滚动视图顶部和底部的文本 Xcode 14 2 iOS 16 Swift 5 7 我研究了其他解决方案 例如 SwiftUI 淡出 ScrollView https stackoverflow com q
  • jQuery && 谷歌浏览器

    该脚本在除 Google Chrome 之外的所有浏览器中都能完美运行 document ready function banners anim img each function var hover width this width va
  • IE输入背景图片问题

    IE 是唯一需要额外维护的浏览器 应该有人为此付费 这是我的问题 我创建了一些带有背景图像的输入 它们适用于 FF Chorme IE9 未测试 Opera Safari 但不适用于 IE7 和 IE8 其中文本通过忽略填充或滚动图像而溢出
  • Nodejs Mongodb更新多个集合

    在 mongodb 中 现在有两个集合 事件和包 所以基本上模型看起来像这样 事件模型 const mongoose require mongoose mongoose Promise global Promise const Schema