在 Mongodb 和 Mysql 中单击添加数据
Posted
技术标签:
【中文标题】在 Mongodb 和 Mysql 中单击添加数据【英文标题】:Add Data in Mongodb and Mysql in single button click 【发布时间】:2022-01-01 20:51:47 【问题描述】:在这个应用程序中,我在 mongodb 中添加数据,这工作正常,但同时我需要实现 mysql。因此,当我注册用户时,它应该保存在 Mongodb 和 Mysql 中。我的 Mysql 数据连接代码已成功,但没有发生数据推送(Mysql)。谁能帮帮我。非常感谢。
const Sequelize =require('sequelize');
const mysql= require('mysql');
var path1 = require('path');
var root_path = path1.dirname(require.main.filename);
var models = require(root_path+'/models');
router.post("/users", function(req, res)
console.log("First In");
var user_id=req.query.user_id
var flag;
var userData = [];
var body_data =req.body.data;
//Mysql Start
const con = mysql.createConnection(
host: 'localhost',
user: 'root',
password: 'root',
database: 'tcexam'
);
con.connect((err) =>
if(err)
console.log('Error connecting to Db',err);
return;
console.log('Connection established');
);
models.userMysl.find(
email: body_data.email.toLowerCase()
)
console.log("Email---------->>>",email);
.then(function(country)
models.userMysl.create(
name: body_data.user_firstName,
lastname : body_data.user_lastname,
mother_name : body_data.motherName,
surname : body_data.Surname,
email: body_data.userEmail.toLowerCase(),
username:body_data.user_name,
password:body_data.user_password,
).then(function(user)
if(error)
console.log("Error",error);
else
res.send(
status: 200,
data:userData
);
);
);
);
//Mysql End
userModel.find(
"role": req.query.user_type
).then(function(users)
users.forEach(user =>
if(user.doc_id=='')
var user =
id: user._id,
name: user.fullName,
status: user.status,
role: user.role,
email:user.email,
lastLoginDate: user.lastLoginDate,
lastLoginTime: user.lastLoginTime,
flag:'0'
userData.push(user);
else
var usr =
id: user._id,
name: user.fullName,
picture: `$filelink/api/usersData/download?document_id=$user.doc_id`,
status: user.status,
role: user.role,
email:user.email,
lastLoginDate: user.lastLoginDate,
lastLoginTime: user.lastLoginTime,
flag:'1'
userData.push(usr);
)
res.send(
status: 200,
data: userData
)
)
"use strict";
module.exports = function(sequelize, DataTypes)
var userMysql = sequelize.define("tce_users",
user_name: DataTypes.STRING(100),
user_password: DataTypes.STRING,
surname: DataTypes.STRING(100),
user_email: DataTypes.STRING(100),
user_firstName:DataTypes.STRING(100),
user_lastname:DataTypes.STRING(100),
user_birthdate:DataTypes.String(17),
user_birthplace:Datatypes.STRING(100),
user_regnumber:DataTypes.STRING(100),
user_ssn:DataTypes.STRING(100),
user_level:DataType.STRING(100),
user_verifycode:Datatypes.STRING(100)
);
return userMysql;
;
【问题讨论】:
【参考方案1】:由于 Node JS 是单线程的,在插入 mysql 代码行之后,在与 mysql db 建立连接之前执行。不知何故,与 mysql 连接需要时间,因此下一个块代码在连接发生之前执行。 首先,你需要改变你需要连接mysql的方法,
-
连接字符串可能不应该在post api本身中,
当应用程序开始使用一些配置工具时,它需要被连接。
你可以选择promise来解决插入的执行
mysql 或者可以使用 async await 的方式在 mysql 之后插入数据
已建立连接。
【讨论】:
以上是关于在 Mongodb 和 Mysql 中单击添加数据的主要内容,如果未能解决你的问题,请参考以下文章