【问题标题】:Passing JSON-Objekt to MYSQL columns via node通过节点将 JSON-Object 传递给 MYSQL 列
【发布时间】:2019-07-01 12:33:47
【问题描述】:

目前我正在尝试用节点填充 MySQL 数据库。
数据存储在像这样的对象中:

插入对象:

{"textField":"testabc","checkBox":false,"dropDown":"1"}

我的 SQL 查询:

"INSERT INTO nodetest (textField,checkBox,dropDown) VALUES('"+insertObj.textField+"','"+insertObj.checkBox*1+"','"+insertObj.dropDown+"')"

基本上,我只想传递该对象并让数据库使用来自对象本身的正确信息填充正确的列。

不幸的是,我不能使用除 MySQL 之外的任何其他数据库,但 mongoDB 允许这样做:

dbo.collection("nodeTest").insertOne(insertObj, function(err,res) {
            if(err) throw err;
            console.log("document inserted");
            db.close();
        })

是否有可能使用 MySql 数据库实现类似的功能?通过脚本编写mabye?

【问题讨论】:

标签: mysql node.js json


【解决方案1】:

您可以使用 sequelize ORM 。以下是实现结果的步骤

1.安装sequelize

npm install --save sequelize

2.安装Mysql方言

npm install --save mariadb or npm install --save mysql2 depending on your server

3.建立连接

const Sequelize = require('sequelize');

const sequelize = new Sequelize('database', 'username', 'password', 
{
host: 'localhost',
  dialect: // one of 'mysql' | 'mariadb' | 'postgres' | 'mssql'
});

您可以按如下方式测试连接:

sequelize.authenticate().then(() => {
console.log('Connection has been established successfully.');}).catch(err => {
console.error('Unable to connect to the database:', err);});

4.为您的桌子建模

const Model = Sequelize.Model;
class Classname extends Model {}
Classname.init({
textField: {
type: Sequelize.STRING,
allowNull: false},
checkBox: {
type: Sequelize.BOOLEAN
// allowNull defaults to true
},dropDown: {
type: Sequelize.STRING
// allowNull defaults to true
}}, 
{sequelize,modelName: 'modelname'
});

5.那你就可以了

Classname.create({"textField":"testabc","checkBox":false,"dropDown":"1"}).then(data => {
console.log(data);
});

希望它能解决你的问题。

【讨论】:

  • Shiroyashaxdd 能解决您的问题吗?如果您特别想使用本机 mongo 库,那么您可以创建一个帮助模块将 json 转换为 mysql 字段。但 ORM 是最首选、最安全和推荐的方法。
猜你喜欢
  • 2013-05-28
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2011-01-23
  • 2012-10-27
  • 2012-04-12
相关资源
最近更新 更多