如何将会话传递给 Mongoose 中的“Model.create()”?

Abd*_*bdu 5 mongoose node.js

如何将会话变量传递给猫鼬中的 Model.Create() 。

我尝试了一些代码,但它给了我以下错误:“要在 Mongoose 中传递 a sessionModel.create()必须传递一个数组”。

    const mongoose = require("mongoose");
    const Company = require("../models/company");
    const Address = require("../models/userAddress");

    exports.add_company = async (req ,res,next)=>{

    const  session = await mongoose.startSession();
    await session.startTransaction();
    const createdDocs = [];


    try{
    const address = new Address({
    _id: new mongoose.Types.ObjectId(),
    addressName: req.body.addressName,
    address1: req.body.address1,
    address2: req.body.address2,
    city: req.body.city,

    pincode: req.body.pincode

    });



    await Address.create(session,address);


    createdDocs.push(address);

    const company = new Company({
             _id: new mongoose.Types.ObjectId(),
             companyName: req.body.companyname,
             companyType: req.body.companytype,
             companyDesc: req.body.companydesc,
             companyWebsite: req.body.companywebsite,
             companyLogo: req.file ? req.file.path : null,
             addressId:createdDocs[0].addressId

         });
     await  Company.create(session,company);


         createdDocs.push(company);


         await session.commitTransaction();
         console.log(createdDocs);  





         res.status(200).json({
          message:"company registered registerd",
          companyName:createdDocs[1].companyName,
          address:createdDocs[0].addressName,

        });


     }
     catch(err){

     await session.abortTransaction();
     res.json({ status:false, message:err.message});



     }
     finally {
     session.endSession();
     }


     };
Run Code Online (Sandbox Code Playgroud)

小智 6

https://mongoosejs.com/docs/transactions.html

将对象保留在数组中,并将会话作为第二个参数。请参阅此处的链接,这可能会有所帮助。