将元素推送到猫鼬中的数组

     2023-03-10     112

关键词:

【中文标题】将元素推送到猫鼬中的数组【英文标题】:Push element to array in mongoose 【发布时间】:2018-09-19 09:05:50 【问题描述】:

我正在尝试将元素推送到 mongoose 中的数组。我正在使用更新和 $push 来做这件事。但它没有在数据库中更新它。这是我的代码。 路线.js:

    var Chooser = require('../chooser');

    var appRouter = function(app) 

    app.put("/chooser/:id", function(req, res) 
    console.log("ID: ", req.params.id);
    if (!req.body.toFollow) 
        return res.send("status": "error", "message": "The account that you want to follow is needed");
    
    else 
        console.log("Cuenta: ", req.body.toFollow);
        Chooser.update(_id: req.params.id, $push: accounts: "name": "foo", "idAccount": 123456);
        return res.send("status": "ok");
    

  );

这是我的猫鼬模式。选择器.js:

var mongoose = require('mongoose');

var chooserSchema = mongoose.Schema(
_id: Number,
accounts: [name: String, idAccount: Number]
,  _id: false );

var Chooser = mongoose.model('Chooser', chooserSchema);

module.exports = Chooser;

【问题讨论】:

“Cuenta”是否登录到控制台?另外,您不想在 .update 之后,即在 update 的回调函数中 res.send 吗? 见***.com/questions/14877967/… 这能回答你的问题吗? Array.push does not seem to work on MongoDB 【参考方案1】:

据我所知,您必须按照以下方式进行操作。

Model.findAndUpdate(_id: 'your_id', 
                    $push: 'your_array_field': 
                    "name": "foo","idAccount": 123456, 
                    new: true, (err, result) => 
                    // Rest of the action goes here
                   )

【讨论】:

【参考方案2】:

我们正在这样做 - 我们正在添加另一个模型,但在您的情况下,您只是添加一个数组,所以将它放在一个变量中并代替 req.body.resource ..

如果您不想,也可以只使用 findByIdAndUpdate 而不是 Async。

这里是模型元素:

 resources: [type: mongoose.Schema.Types.ObjectId, ref: 'Resource'],

这里是向数组中添加项目的方法:

//AddResource to a crew
export function addResource(req, res) 
  if (req.body._id) 
    delete req.body._id;
  
  Crew.findByIdAndUpdateAsync(req.params.id,
    
      $push:  "resources": req.body.resource 
    ,
     safe: true, upsert: true ,
    function (err, model) 
      if (err) 
        //console.log(err);
        return res.send(err);
      
      return res.json(model);
    );

并删除:

//deleteResource to a crew
export function deleteResource(req, res) 
  if (req.body._id) 
    delete req.body._id;
  
  // console.log(req.body.resource);
  Crew.findByIdAndUpdateAsync(req.params.id,
    
      $pullAll:  "resources": req.body.resource 
    ,
    function (err, model) 
      // console.log(model);
      if (err) 
        //console.log(err);
        return res.send(err);
      
      return res.json(model);
    );

【讨论】:

【参考方案3】:

我们可以这样做

Model.findOneAndUpdate("_id":req.body.id,
            "$push": "resources": req.body.resources
        ,new: true, safe: true, upsert: true ).then((result) => 
            return res.status(201).json(
                status: "Success",
                message: "Resources Are Created Successfully",
                data: result
            );
        ).catch((error) => 
            return res.status(500).json(
                status: "Failed",
                message: "Database Error",
                data: error
            );
        );`

【讨论】:

【参考方案4】:

这是在 mongoose 中更新模型的方法(使用 async await):


let updatedModel = await Model.findByIdAndUpdate(req.params.id,

  $push:  accounts:"name": "foo", "idAccount": 123456  ,

  'upsert': true );

或在您的代码中

如果您希望将更新后的文档返回给您,您可能错过了 new: true, upsert: true 。

Chooser.update(_id: req.params.id, $push: accounts: "name": "foo", "idAccount": 123456,new: true, upsert: true );

【讨论】:

如何通过一次调用将一组对象推送到猫鼬中的数组中?

】如何通过一次调用将一组对象推送到猫鼬中的数组中?【英文标题】:Howtopushanarrayofobjectsintoanarrayinmongoosewithonecall?【发布时间】:2012-08-1109:59:56【问题描述】:我需要使用一次调用将多个值推送到mongoose中的数组中。我尝试使... 查看详情

如何推送到猫鼬中的数组

】如何推送到猫鼬中的数组【英文标题】:Howtopushtoanarrayinmongoose【发布时间】:2016-01-2919:51:10【问题描述】:我有这个代码:router.post(\'/setsuggestions\',function(req,res,next)if(!req.body.username||!req.body.challengessuggestions)returnres.status(400).jso 查看详情

将元素推送到嵌套数组猫鼬 nodejs

】将元素推送到嵌套数组猫鼬nodejs【英文标题】:Pushelementintonestedarraymongoosenodejs【发布时间】:2018-05-1016:46:59【问题描述】:我正在尝试将一个新元素推送到一个数组中,我在基于express/nodejs的api上使用了mongoose。这是猫鼬的代... 查看详情

如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?

】如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?【英文标题】:Howtoavoidcreatingobjectinsideobjectandpushtheelementsdirectlyintoanarrayinexpressusingmongoose?【发布时间】:2020-12-2611:59:38【问题描述】:filesArray是对象数... 查看详情

猫鼬:更新字段,将对象推送到数组中[重复]

...9:17:24【问题描述】:我想在mongo数据库的数组中添加一个元素:db.keypairs.update(pubkey:"1234567890",$push:listTxId:txHash:"yyy",spent:false)结果很完美:lis 查看详情

将文档推送到猫鼬模型数组中的子文档中

】将文档推送到猫鼬模型数组中的子文档中【英文标题】:Pushdocumentintosubdocumentinarrayofmongoosemodel【发布时间】:2018-05-1721:01:58【问题描述】:在我的公司架构中,我有一个已发布的工作,它是数组类型,将保存子文档companySchema.... 查看详情

从猫鼬中的数组中删除元素

】从猫鼬中的数组中删除元素【英文标题】:Removeelementfromarrayinmongoose【发布时间】:2018-05-2815:48:29【问题描述】:我正在研究nodejs/express我想在mongoose中删除数组中的元素我有这种格式的文件"_id":ObjectId("5a2e19223e50551504b316c0"),"user... 查看详情

如何在猫鼬中动态地将值推入对象的属性?

...描述】:我想根据使用mongoose从前端收到的属性值将值推送到数组中。架构:authencity:fake:[],notSure:[],authentic:[],现在我想根据从前端接收到的属性值将值推送到数组中co 查看详情

猫鼬推送到数组

】猫鼬推送到数组【英文标题】:mongoosepushtoarray【发布时间】:2019-10-1309:35:06【问题描述】:我需要将一个对象推入一个数组到数据库中,但我得到一个错误。我究竟做错了什么?找到了这样一个话题Pushitemsintomongoarrayviamongoose... 查看详情

猫鼬推送到数组

】猫鼬推送到数组【英文标题】:mongoosepushtoarray【发布时间】:2019-10-1309:35:06【问题描述】:我需要将一个对象推入一个数组到数据库中,但我得到一个错误。我究竟做错了什么?找到了这样一个话题Pushitemsintomongoarrayviamongoose... 查看详情

将值推送到猫鼬模式中对象内的数组

】将值推送到猫鼬模式中对象内的数组【英文标题】:Pushavaluetoanarrayinsideanobjectinmongooseschema【发布时间】:2021-02-0916:12:05【问题描述】:我正在尝试将值推送到mongoose模式中的对象内的数组。这是我的架构:constUserSchema=newmongoose... 查看详情

如何将新值推送到 Mongoose 中的嵌套数组

】如何将新值推送到Mongoose中的嵌套数组【英文标题】:HowtopushanewvaluetoanestedarrayinMongoose【发布时间】:2019-11-1914:55:00【问题描述】:我正在使用猫鼬。如何将新值推送到数组fixture2?这是我的收藏。我使用userHash来识别此文档。... 查看详情

如何将 GraphQL 中的对象元素推送到 javascript 对象中的嵌套数组中?

】如何将GraphQL中的对象元素推送到javascript对象中的嵌套数组中?【英文标题】:HowdoIpushobjectelementsfromGraphQLintonestedarrayinjavascriptobject?【发布时间】:2020-06-2117:18:24【问题描述】:我目前确实像这样映射GraphQL数据:constplotDataArray... 查看详情

如何让猫鼬将一组 url 推送到数组子文档

】如何让猫鼬将一组url推送到数组子文档【英文标题】:HowcanIgetmongoosetopushanarrayofurlstoanarraysubdocument【发布时间】:2020-03-1713:57:22【问题描述】:我正在制作一个包含多个上传图片和多个帖子的博客系统。我创建了一个上传屏幕... 查看详情

如何正确地将具有多个元素的新对象推送到数组中?

】如何正确地将具有多个元素的新对象推送到数组中?【英文标题】:Howtoproperlypushanewobjectwithmultipleelementintoanarray?【发布时间】:2020-01-0807:02:20【问题描述】:我正在尝试将新生成的对象推送到JavaScript中的数组中我有一个表单... 查看详情

猫鼬中的保存功能不起作用

】猫鼬中的保存功能不起作用【英文标题】:Thesavefunctioninmongoosenotworking【发布时间】:2021-03-1008:34:47【问题描述】:我有一个架构,当我尝试更新数据库中的数组时,文件没有得到更新,并且数组始终为空。当我在更新后打印... 查看详情

从猫鼬中的数组对象中选择特定项目

】从猫鼬中的数组对象中选择特定项目【英文标题】:Selectspecificsitemsfromarrayobjectsinmongoose【发布时间】:2021-08-2302:36:54【问题描述】:我有一个mongoDBobjetc,例如:["items":["title":"hello","options":["value":"A","image":"img1","des":"des1","value":... 查看详情

在javascript中将新元素推送到数组时出错

】在javascript中将新元素推送到数组时出错【英文标题】:errorwhenpushingnewelementtoarrayinjavascript【发布时间】:2017-06-1710:17:19【问题描述】:我正在尝试将html表单元素中的cmets添加到angularjs中的数组中。当我使用javascipt推送功能时... 查看详情