Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >猫鼬从findByIdAndUpdate (继承模式)中删除数组

猫鼬从findByIdAndUpdate (继承模式)中删除数组
EN

Stack Overflow用户
提问于 2015-04-30 03:51:20
回答 2查看 880关注 0票数 2

我试着用findByIdAndUpdate更新一只猫鼬模型

为了解决这个问题,这个模型被称为ItemVariant,它继承了Item

有效载荷数据的一个例子是:

代码语言:javascript
代码运行次数:0
复制
var data = {
  arrayField: [ 1, 3 ],
  description: 'This is a description' }
}

如果我打电话

代码语言:javascript
代码运行次数:0
复制
ItemVariant.findByIdAndUpdate(objectId, data);

我可以看到描述被更新了,但是arrayField根本没有传递给mongo -实际上所有的数组都被删除了数据对象。

我一直在试图弄清楚如何做到这一点,我看过如何为数组设置$pushAll,但似乎没有什么效果。

这里有什么东西我遗漏了吗?

模型架构是继承的。猫鼬模型看起来是这样的:

代码语言:javascript
代码运行次数:0
复制
function ItemVariantSchema() {
    var self = this;
    Schema.apply(this, arguments);

    self.add({           
        description: [String],
        arrayField: [Number]
    });
}
util.inherits(ItemVariantSchema, ItemSchema);

// the field that represents the sub-class discriminator
var schemaOptions = {
    discriminatorKey: 'type'
};

// create ItemVariant schema
var itemVariantSchema = new ItemVariantSchema({}, schemaOptions);

// create ItemVariant model
Item.discriminator('Variant', itemVariantSchema);

// Export the ItemVariant schema
module.exports = ItemVariantSchema;

单神输出的一个例子--详细的输出:

代码语言:javascript
代码运行次数:0
复制
command: findAndModify { findandmodify: "itemvariants", query: { _id: ObjectId('5541fb680dc0e9223bea1ddb') }, new: 1, remove: 0, upsert: 0, update: { $set: { description: "EDIT: some description" } } } update: { $set: { description: "EDIT: some description" } } nscanned:1 nscannedObjects:1 nMatched:1 nModified:0 keyUpdates:0 numYields:0 locks(micros) w:104 reslen:358 0ms

如您所见,arrayField已被删除

我也尝试过这样的方法:

代码语言:javascript
代码运行次数:0
复制
var data = {
    $set: { description: 'This is a description' },
    $push: { arrayField: [ 1, 3 ] }
}

但是,当$push数组到达mongo时,它似乎是空的。

此外,正如@chridam所建议的,我也尝试过这样的方法:

代码语言:javascript
代码运行次数:0
复制
var data = {
    $set: {
        description: 'some description' 
    },
    $addToSet: {
        arrayField: {
            $each: [2, 3]
        }
    }
}

输出现在如下所示:

代码语言:javascript
代码运行次数:0
复制
command: findAndModify { findandmodify: "itemvariants", query: { _id: ObjectId('5541fb680dc0e9223bea1ddb') }, new: 1, remove: 0, upsert: 0, update: { $set: { description: "EDIT: another description" }, $addToSet: { arrayField: {} } } } update: { $set: { description: "EDIT: another description" }, $addToSet: { arrayField: {} } } nscanned:1 nscannedObjects:1 nMatched:1 nModified:1 keyUpdates:0 numYields:0 locks(micros) w:118 reslen:366 0ms
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-30 06:03:11

看来遗产是这里的罪魁祸首。

猫鼬模型需要来自鉴别者:

代码语言:javascript
代码运行次数:0
复制
var ItemVariant = Item.discriminators['Variant'];
ItemVariant.findByIdAndUpdate(objectId, data);

这对我来说很管用。阵列的拍击有点像红鲱鱼。而我的问题并没有描绘出整个情况。谢谢帮助@chridam

票数 0
EN

Stack Overflow用户

发布于 2015-04-30 04:07:53

您需要使用$set操作符:

代码语言:javascript
代码运行次数:0
复制
var data = {
   "arrayField": [ 1, 3 ],
   "description": "This is a description" 
};

ItemVariant.findByIdAndUpdate(objectId, { "$set": data });

-更新 --

尝试将$set update运算符与description字段中的$each更新运算符和$addToSet运算符与arrayField数组字段上的$each修饰符结合使用。$each修饰符允许$addToSet操作符向数组字段添加多个值:

代码语言:javascript
代码运行次数:0
复制
var data = {
   "arrayField": [ 1, 3 ],
   "description": "This is a description" 
};

var update = {
    "$set": {
        "description": data.description
    },
    "$addToSet": {
        "arrayField": {
            "$each": data.arrayField
        }
    }
};

ItemVariant.findByIdAndUpdate(objectId, update, options, callback);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29967032

复制
相关文章
使用PDF.JS在线查看PDF
第一步:下载源码https://github.com/mozilla/pdf.js
易墨
2018/09/14
32.5K1
使用PDF.JS在线查看PDF
使用 pdf.js 在网页中加载 pdf 文件
在网页中加载并显示PDF文件是最常见的业务需求。例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票。(2)电子商务管理系统中查看发布的公文,公文文件一般是PDF格式的文件。
张传宁IT讲堂
2019/10/30
43K5
使用 pdf.js 在网页中加载 pdf 文件
Fluid -3- pdf.js PC,移动端查看 PDF
pdf.js 是用于解析和呈现 PDF 的基于 Web 标准平台的通用解决方案,功能强大。
为为为什么
2022/08/06
8.9K0
Fluid -3- pdf.js PC,移动端查看 PDF
pdf.js预览pdf文件流(base64)
新接手一个老项目,需要改造pdf文件的预览效果,接口直接返回的pdf文件的文件流base64字符串,前端只能拿到base64来进行预览。
五月
2022/11/14
16K0
pdf.js预览pdf文件流(base64)
Android使用pdf.js预览pdf(支持显示签章/签名)
使用步骤: 1.复制这三个东西到assets目录下 2.如下配置Webview fun initWebSettings() { //去掉横向滚动条 wv.setHor
Zachary46
2019/05/10
9.3K0
Android使用pdf.js预览pdf(支持显示签章/签名)
PDF.js专题
前言     英文是github上的原文,找不到中文资料,我根据自己理解翻译的,有些词意思拿不准就直接把单词留在原地了,看这个文档应该可以凑合着用了。 PDF.js是什么     PDF.js is a Portable Document Format(PDF) viewer that is built with HTML5.PDF.js is community-driven and supportedby Mozilla Labs. Our goal is to create a general-pur
MonroeCode
2018/02/09
21.1K0
PDF.js专题
pdf.js使用方法「建议收藏」
项目中 显示 pdf 的功能,浏览过不少的技术帖,都不太理想,花了点时间研究了下pdf.js正确使用方法,总结下:1.防止自己忘记 2.工作留有痕迹 3.供大家参考借鉴
全栈程序员站长
2022/09/14
15.7K0
pdf.js使用方法「建议收藏」
PDF.js Electron Viewer
PDF.js 是基于 HTML5 解析与渲染 PDF 的 JavaScript 库,由 Mozilla 主导开源。
GoCoding
2021/12/17
12K0
PDF.js Electron Viewer
组件分享之前端组件——基于pdf.js在线预览PDF文件
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
cn華少
2022/03/06
5.2K0
基于HTML的PDF展示 pdf.js
很不错的一个插件,推荐给大家 pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。 在线演示:http://mozilla.github.com/pdf
逸鹏
2018/04/09
8.1K0
基于HTML的PDF展示 pdf.js
pdf.js显示合同签名问题
需求 pdf页面显示在ios11以下的环境,合同的签名印章或签字会显示不出 解决方案(初步处理参考下文引用,这里是后续具体做法) 现在通过使用pdf.js插件,参考下文,引入自己的代码 我把gen
老梁
2019/09/10
9.8K0
pdf.js显示合同签名问题
在jfinal中使用druid,并配置查看权限
首先导入druid包,然后配置configPlugin 1 @Override 2 public void configPlugin(Plugins me) { 3 /**配置druid数据连接池插件**/ 4 DruidPlugin dp=new DruidPlugin(getProperty("jdbcUrl"),getProperty("user"),getProperty("password").trim()); 5 /**配置dru
Ryan-Miao
2018/03/13
1.3K0
使用 pdf.js 跨域问题的处理方法1
在《使用 pdf.js 在网页中加载 pdf 文件》中详细介绍了 pdf.js 的使用与集成网页开发的基本方法。展示效果如下图:
张传宁IT讲堂
2019/11/03
6.9K1
PDF.js实现个性化PDF渲染(文本复制)
这种实现方式优缺点都很明显: 优点:自带“打印”,“搜索”,“翻页”等功能,强大且实现方便。 缺点:不同浏览器的pdf工具样式不一,且无法满足个性化需求,比如:禁止打印,下载等。
庞小明
2019/05/25
10.4K0
engineercms利用pdf.js制作连续看图功能
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/78991736
hotqin888
2018/09/11
4.5K0
engineercms利用pdf.js制作连续看图功能
WKWebView接入PDF.js过程记录处理总结
最近用WKWebView读取PDF文件出现字体异常、电子图章不显示的问题,后来查找很多解决方案,最后决定用PDF.js的方式来实现
freesan44
2023/02/14
2.8K0
使用tail查看并跟踪文本文件的结尾
tail命令是用于查看文本文件末尾的核心Linux实用程序。您还可以使用跟随模式查看实时添加到文件中的新行。tail类似于,用于查看文件的开头
Likenttt
2018/09/06
2.4K0
pdf.js分片加载、分段加载golang beego
viewer.html页面不需要修改。如果需要,则修改viewer.js和pdf.js等引用文件位置
hotqin888
2021/12/06
20.8K2
pdf.js分片加载、分段加载golang beego
WKWebView接入PDF.js过程记录处理总结
最近用WKWebView读取PDF文件出现字体异常、电子图章不显示的问题,后来查找很多解决方案,最后决定用PDF.js的方式来实现
freesan44
2023/01/18
2.5K0
点击加载更多

相似问题

如何实现pdf.js在pdf浏览器中查看pdf文件?

24

无法在angularjs中使用pdf.js查看数字签名的pdf文件

13

使用pdf.js查看器在特定页面加载PDF

11

pdf.js默认查看器不显示pdf文件

1101

使用pdf.js查看器打开外部文件

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档