当前位置: 首页 > 面试题库 >

用mongoose添加不在模式中的字段

齐兴运
2023-03-14
问题内容

我正在尝试向文档中添加一个新字段,但这不起作用:

创建我的UserModel原型:

model = require("../models/user")
UserModel.prototype.findOneAndUpdate = function(query, params, cb) {
   model.findOneAndUpdate(query, params, { returnNewDocument: true, new: true }, function(err, data) {
      if (!err) {
         cb(false, data);
      } else {
         cb(err, false);
      }
   });
};

然后叫它

userFunc = require("../../model_functions/user")

userFunc.findOneAndUpdate({
                  "email.value": userEmail
            }, {
                  $set: {"wat":"tf"}
            },
            function (err, updatedUser) {
                  //This logs the updated user just fine, but the new field 
                  is missing
                  console.log(updatedUser);

                  ...
            }
      );

只要存在,此字段便会成功更新,但不会添加任何新字段。


问题答案:

您可以使用选项在架构中添加和删除字段 { strict: false }

选项:严格

严格选项(默认情况下启用)可确保传递给我们的模型构造函数的未在架构中指定的值不会保存到数据库中。

var thingSchema = new Schema({..}, { strict: false });

您也可以在更新查询中执行此操作

Model.findOneAndUpdate(
  query,  //filter
  update, //data to update
  { //options
    returnNewDocument: true,
    new: true,
    strict: false
  }
)

您可以在这里查看文档



 类似资料:
  • 问题内容: 假设采用以下架构,我尝试使用Mongoose保存一些GeoJSON数据 这就是我尝试保存文档的方式 但是,我在数据库中得到的是 看起来整个位置标签和数据都丢失了。这是定义架构的错误方法还是保存文档的错误方法? 问题答案: 当使用在嵌入式对象中命名的字段时,您需要使用一个对象来定义其类型,或者Mongoose认为您正在定义对象本身的类型。 因此,将您的架构定义更改为:

  • 添加mongoose mkdir models npm i -S mongoose npm i -S mongoosedao 在路由里增加创建代码 配置 配置mongodb链接信息 config/mongodb.example.js db.js cp config/mongodb.example.js config/mongodb.js 创建models/user.js var mongoos

  • 问题内容: 如果我有两个模式,如: 我试图像上面的示例一样将它们连接在一起,但是我不知道该怎么做。最终,如果我可以做这样的事情,那将使我的生活变得很轻松 问题答案: 听起来好像populate方法是您想要的。首先,对您的发布架构进行少量更改: 然后建立您的模型: 然后,当您进行查询时,可以像这样填充引用:

  • 问题内容: 我正在为约会应用程序构建Mongoose模式。 我希望每个文档都包含对它们所经历过的所有事件的引用,其中另一个是系统中具有自己模型的架构。如何在架构中对此进行描述? 问题答案: 您可以使用 人口 来描述它 填充是用其他集合中的文档自动替换文档中指定路径的过程。我们可以填充单个文档,多个文档,普通对象,多个普通对象或查询返回的所有对象。 假设您的事件模式定义如下: 为了显示如何使用填充,

  • 我正在为REST应用编程接口做一个适配器。我已经为POST和PUT方法的主体使用了模型模式。在适配器处。 现在,我遇到了需要数组的字段的。 大摇大摆的UI主体输入 时间1)在大摇大摆负载下,模型启动: 时间2)用户编辑: 模型1。棒极了 Model2.groovy 我希望捕获/保存用户添加到的元素,比如,。使用当前代码,我只能获取数组的第一个元素,除非用户这么说,否则我不想创建Model2的许多实

  • 正在尝试在Typescript中实现Mongoose模型。搜索Google只发现了一种混合方法(结合JS和TS)。如果没有JS,我们将如何按照我相当天真的方法实现用户类? 希望能够IUserModel没有行李。