在 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 中单击添加数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql redis mongodb

mysql和mongodb的区别

mongodb和redis区别是啥?

MongoDB和MySQL的区别

1200万 mysql数据怎么快速导入到Mongodb

基于Redis+MySQL+MongoDB存储架构应用