如果没有,请检查现有数据然后创建 mongodb 和 mongoose

Posted

技术标签:

【中文标题】如果没有,请检查现有数据然后创建 mongodb 和 mongoose【英文标题】:check an existing data if not then create mongodb and monggose 【发布时间】:2021-06-26 04:19:00 【问题描述】:

我正在尝试对 MongoDB 数据进行预先存在检查,如果不存在则插入,但不知何故我无法执行该操作。当我在 express 上进行控制台日志时,它确实捕获了数据,但不知何故它不起作用。这是我的模型和其他 API:

const mongoose = require("mongoose");
const ObjectID = mongoose.Schema.Types;

const ScheduleSchema = mongoose.Schema(
    startdate: type: Date,
    enddate: type: Date,
    dateadded: type: Date,default: Date.now,
    userid:[type:ObjectID, ref:"User"],
  , timestamps: true );
  
  module.exports = mongoose.model("Schedule", ScheduleSchema)

API:

const Schedule = require('../models/schedules')


router.post('/schedule/addschedule/:id',JWTAuthenticatToken, async (req, res) =>    
   conststartdate,enddate = req.body

    //the console log did print out the data
    //
    //startdate: '2021-04-05T06:27:40.000Z',
    //enddate: '2021-04-08T16:00:00.000Z'
    //
    //6055e1ed5eec1e1c10df91d4

   console.log(req.body)
   console.log(req.params.id)

    const existingSchedule = await Schedule.find(startdate: startdate,enddate:enddate,userid:req.params.id)
    if(existingSchedule)
        return res.json(statusCode: "409", msg:'This schedule already exisits!');
    else
        const schedule = new Schedule(
            startdate: startdate,
            enddate:enddate,
            userid:existingSchedule.req.params.id)            
            const scheduleresult = await schedule.save()
            return res.json(statusCode: "200")
    
);

我想知道我哪里出错了?非常感谢,非常感谢任何帮助。再次感谢。

【问题讨论】:

【参考方案1】:

https://mongoosejs.com/docs/tutorials/findoneandupdate.html

使用 upsert 选项,您可以使用 findOneAndUpdate() 作为查找和更新操作。如果 upsert 找到与过滤器匹配的文档,则它的行为类似于普通的 findOneAndUpdate()。但是,如果没有文档匹配过滤器,MongoDB 将通过过滤器和更新组合插入一个,如下所示。

doc = await Schedule.findOneAndUpdate(filter, update, 
  new: true, // You should set the new option to true to return the document after update was applied.
  upsert: true // Make this update into an upsert
);

【讨论】:

以上是关于如果没有,请检查现有数据然后创建 mongodb 和 mongoose的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 基础操作

Mongodb - 为现有集合添加架构

如何首先检查 mongodb 中的数组,如果它还没有包含这个项目(字符串),然后添加项目?

mongodb问题:按照教程操作mongodb,但是没有找到mongo

如何使用 PHP 正确检查 MongoDB Atlas 数据库中的现有数据。我总是知道名字已经存在

mongodb 在节点中使用 mongoose 想要在查询中使用 or 和