Tag: 事务

如何validationSequelize交易,并使其看起来不错

经过几年的努力,我正在努力学习NodeJS,所以我正在build设一个小型银行网站作为testing。 我决定为我的ORM使用Sequelize,但是我喜欢用一种方式在人们之间传送金钱。 这是我第一次尝试: // myUsername – who to take the money from // sendUsername – who to send the money to // money – amount of money to be sent from `myUsername`->`sendUsername` // Transaction is created to keep a log of banking transactions for record-keeping. module.exports = (myUsername, sendUsername, money, done) => { // Create […]

有没有办法使用Sequelize一次性保存多个embedded式模型

假设我们在NodeJs Sequelize中有这样的结构。 var User = sequelize.define('user', {/* … */}) var Project = sequelize.define('project', {/* … */}) Project.hasMany(User) video演示者的这部分提供了使用承诺以两个步骤保存embedded的对象。 在我们的情况下,会是这样的: Project.create({ … }).then(function(project){ User.create({ … projectId:project.id }) }) 但是这种方法会导致两个数据库调用。 那么,是否有可能保存embedded式对象(包含用户的项目,例如用户必须有项目的ID作为一个外键)到一个数据库调用数据库或在一个事务使用Sequelize?

在pg-promise中跨多个控制器的多个查询之间共享事务或任务对象

我对node.js,postgresql,Promise和事实上的stackoverflow都比较陌生,所以如果事情听起来有些不协调的话,我会提前道歉的! 我目前正在尝试在各种控制器中分布的链式承诺内运行多个查询。 我想在同一个事务或任务中运行所有的查询,以消除多个连接和断开连接到数据库。 我已经尝试了以下方法,在这里添加一名学生并为该学生分配两名导师。 HTTP请求被路由到学生控制器,该控制器通过学生存储库添加学生。 学生存储库是任务启动的地方,并返回到控制器,该控制器将其转发给导师控制器,并沿着链路进入… @ HttpPost("/api/students/create") addStudent( @ Req()request) { var studentid; var mentorids= []; //Add the student return this.studentRepository.addStudent(request.body.student) .then(newStudentId => { studentid = newStudentId; //Add the mentors, passing the transaction object received back from studentRepository return this.mentorController.addMentor(request.body.schoolid, request.body.mentors, newStudentId.transaction) .then(result => { var data = []; console.log(result); for (var role in […]

在PostgreSQL中重新启动一个失败的事务

通过事务我的意思是几个SQL语句包装(例如)在一个begin isolation level serializable块。 并发事务可以使这个事务失败,即回滚。 如何在PostgreSQL中重启失败的事务?

节点js。 续订交易

我的数据库中有'money'字段的'Banks'表, 用户可以定期提款,但只有在银行存款> 0的情况下才能提款。 首先,我应该得到银行的实体,然后检查(银行。金额> amountToWithdraw),然后撤回这个金额。 想象一下当并发用户试图提取一些钱的情况。 在那个时候,我检查是否(bank.money> amountToWithdraw)其他用户可以执行提款操作,而实际银行金额在DB中会less一些。 如何将交易应用于寻找银行业务(如何locking银行实体)? models.sequelize.transaction(function (t) { return models.Banks.findOne({where: { money: { $gt: 0 } }).then(function(bank){ //in this moment other user finished the same operation // how to lock access for editing bank object by other users after //findOne method? bank.money -= amountToWithdraw; return bank.save({transaction: t}); }) })

根据事务处理钩子

我想在我的用户模型上的afterCreate上创build一个sequelize挂钩。 当我只是创build一个没有交易的用户时,它工作得很好。 但是如果我在事务中运行我的创build语句挂钩运行之前提交。 用户模型挂钩 hooks: { afterCreate: userModule.NewUserHook, afterBulkCreate: userModule.NewUserHook } 钩子function NewUserHook: function NewUserHook(user, options){ console.log('Inside hook'); } 交易在options.transaction中是可以接受的。 在交易提交之后,有没有办法挂钩?

这是用Neo4j编写多语句事务的正确方法吗?

我很难解释Neo4j关于事务的文档。 他们的文档似乎表明喜欢这样做,而不是显式声明tx.commit()和tx.rollback() 。 这看起来是多语句交易和neo4j-driver最佳实践吗? const register = async (container, user) => { const session = driver.session() const timestamp = Date.now() const saltRounds = 10 const pwd = await utils.bcrypt.hash(user.password, saltRounds) try { //Start registration transaction const registerUser = session.writeTransaction(async (transaction) => { const initialCommit = await transaction .run(` CREATE (p:Person { email: '${user.email}', tel: '${user.tel}', […]

节点Orm2交易插件

我似乎有问题如何使用交易插件(与Postgresql)与节点orm2。 我想我误解了事务如何与asynchronous函数调用一起工作。 这是我的代码的一个例子: function(row){ db.transaction(function(err, txn){ if(err){ return console.log(err) }; row.property = 'foo'; row.save(function(err){ if(err){ return console.log(err) }; console.log("saved"); }); txn.commit(function(err){ if(err){ return console.log(err) }; console.log("committed"); }); }); 当我运行这段代码时,偶尔会看到console.log输出: "committed" "saved" 这是我所期望的相反的顺序。 我对行进行的更改不会保存到数据库中。 看起来在这里有一些asynchronous函数调用的问题,但我只是从节点orm2事务插件的文档。 任何人有任何想法我做错了什么? 谢谢!

与Sequelize交易不起作用

我想build立一个简单的networking表单,你可以input一个人的名字,姓氏,并为这个人select多个组(但现在是一个) 我正在使用node.js并将其存储在MariaDB数据库中。 Sequelize根据定义的模型创build了表Persons , Groups和GroupsPersons 。 var Sequelize = require("sequelize"); var sequelize = new Sequelize(config.database, config.username, config.password, config); var Group = sequelize.define("Group", { name: { type: DataTypes.STRING, allowNull: false } } var Person = sequelize.define("Person", { firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING, allowNull: false } } Person.belongsToMany(Group, {as: 'Groups'}); Group.belongsToMany(Person, […]

没有嵌套的nodejs pg事务

我想知道是否有可能运行一系列的SQL语句,并使它们都在单个事务中提交。 我正在看的场景是一个数组有一系列的值,我想插入到一个表中,而不是单独的,但作为一个单位。 我正在看下面的项目,它提供了使用pg的节点中事务的框架。 单个事务看起来是嵌套在一起的,所以我不确定这是如何处理一个包含可变数目元素的数组的。 https://github.com/brianc/node-postgres/wiki/Transactions var pg = require('pg'); var rollback = function(client, done) { client.query('ROLLBACK', function(err) { //if there was a problem rolling back the query //something is seriously messed up. Return the error //to the done function to close & remove this client from //the pool. If you leave a client in the […]