Я создаю небольшое приложение с нодом и монго с мангустом в качестве драйвера.Я использую версию mongoose 5.4.x.и я реализую сделку.получение session.startTransactions не является функцией.Любая помощь была бы хороша.
Ниже приведен код, который я сделал до сих пор: Получение указанной ошибки при передаче некоторых данных в базу данных.
const router = express.Router();
const bcrypt = require('bcrypt');
const mongoose = require('mongoose');
const UserModel = require('../models/user');
const ShopDetailsModel = require('../models/shopDetailsModel');
// const validateRegisterInput = require('../validation/signUpValidation');
// Required Db Config
// const mongoURI = 'mongodb+srv://xxxx:xxxx@cluster0-vx5ok.mongodb.net/test?retryWrites=true',
const dbConfig = require('../configs/dbConfig').mongoURI;
// Mongo Connection Establishment
mongoose
.connect(dbConfig, { useNewUrlParser: true })
.then(() => console.log('MongoDB connected'))
.catch((err) => { console.log(err) });
// @route POST /users/regiter
// @desc Register a New User / returns String
// @access Public
router.post('/register',
(req, res) => {
// const { errors, isValid } = validateRegisterInput(req.body);
// Check Validation
// if (!isValid) {
// return res.status(400).json(errors);
// }
const session = mongoose.startSession();
session.startTransaction();
UserModel.findOne({ contact: req.body.contact })
.then(user => {
if (user) {
return res.status(400).json({ msg: 'User Already Registered' });
} else {
try {
const newShop = new ShopDetailsModel({
shopName: req.body.shopName,
shopId: req.body.shopName,
shopNo: req.body.shopNo,
street: req.body.street,
country: req.body.country,
state: req.body.state,
city: req.body.city,
pincode: req.body.pincode,
shopTelephone: req.body.shopTelephone,
});
let hashed = '';
bcrypt.genSalt(10, (err, salt) => {
if (err) throw err;
bcrypt.hash(req.body.password, salt, (err, hash) => {
if (err) throw err;
hashed = hash;
return hash;
})
})
const newUsr = new UserModel({
firstName: req.body.firstName,
lastName: req.body.lastName,
contact: req.body.contact,
shopDetails: newShop,
password: hashed,
});
newShop
.save()
.then(
newUsr
.save()
.then(user => res.status(200).json({ msg: `${user.firstName} ${user.lastName} registered Succesfully` }),
session.commitTransaction(),
session.endSession()
)
.catch(err => console.log(err),
session.abortTransaction(),
session.endSession()
)
)
.catch(err => console.log(err),
session.abortTransaction(),
session.endSession()
)
} catch (e) {
console.log('Error generating the shop and user objects.', e);
session.endSession();
}
}
})
}
);
module.exports = router;