【问题标题】:node js with sequelize. Not able to insert in table带有续集的节点 js。无法插入表格
【发布时间】:2020-08-01 16:27:51
【问题描述】:
  1. 背景

  2. 使用 nodejs 版本 12。

  3. 在 MySQL 数据库 dapdb 中创建表“user”。

  4. 当我尝试将记录写入表时 - authController - Postman 描述: "{ “状态”:“成功????”, “数据”: {} }"

  5. 没有数据写入表,这是问题所在。文件如下。

server.js

    const dotenv = require('dotenv');
    dotenv.config({ path: './config.env' });
    const db = require('./database/db');
    const app = require('./app');
    ///////////////////////////////
    // 4. Start Server
    const port = process.env.PORT || 90;
    
    db.sequelize.sync().then(() => {
      app.listen(port, () => {
        console.log(`App running on port ${port}...`);
      });
    });

   // db.js
    const Sequelize = require('sequelize');
    const mysql = require('mysql');
    const db = {};
    const sequelize = new Sequelize(process.env.db, process.env.logonid, process.env.password, {
      host: process.env.host,
      port: process.env.dbport,
      dialect: 'mysql',
    });
    db.sequelize = sequelize;
    db.Sequelize = Sequelize;
    module.exports = db;

    //userModel.js
   const db = require('./../database/db');
    Sequelize = require('sequelize');
    const validate = require('validator');
    
    const User = db.sequelize.define('user', {
      name: {
        type: Sequelize.STRING,
        trim: true,
        required: [true, 'Please give me your name!'],
        len: [3 - 50],
      },
      email: {
        type: Sequelize.STRING,
        unique: true,
        trim: true,
        required: true,
        lowercase: true,
        validate: [validate.isEmail, 'Please provide a valid email.'],
        photo: Sequelize.STRING,
        password: {
          type: Sequelize.STRING,
          required: [true, 'Please provide a password.'],
          minlength: 8,
        },
      },
      password: {
        type: Sequelize.STRING,
        allowNull: false,
      },
      passwordConfirm: {
        type: Sequelize.STRING,
        required: [true, 'Please provide a password confirmation.'],
      },
    });
    module.exports = User;

    // authController.js
    const db = require('./../database/db');
    const User = require('./../models/userModel');
    exports.signup = async function (req, res, next) {
      const newUser = await db.sequelize.sync().then(function () {
        User.create({
          name: req.body.name,
          email: req.body.email,
          password: req.body.password,
          passwordConfirm: req.body.passwordConfirm,
        });
        console.log(req.body);
      });
      res.status(201).json({
        status: `Success ????`,
        data: {
          user: newUser,
        },
      });
    };

      // app.js
const express = require('express');
const morgan = require('morgan');

const userRouter = require('./routes/userRoutes');
const app = express();

///////////////////////////////
// 1. Middlewares

if (process.env.NODE_ENV === 'development') {
  app.use(morgan('dev'));
}
app.use(express.json());
app.use(express.static(`${__dirname}/public`));
app.use((req, res, next) => {
  // console.log('Hello from the middleware');
  next();
});
app.use((req, res, next) => {
  req.requestTime = new Date().toISOString();
  next();
});
app.use('/api/v1/users', userRouter);
module.exports = app;

【问题讨论】:

  • 感谢您修复格式。

标签: mysql node.js express sequelize.js


【解决方案1】:

您的结果没有返回任何内容。你可以试试这个:

 const db = require('./../database/db');
    const User = require('./../models/userModel');
    exports.signup = async function (req, res, next) {
      const newUser = await User.create({
          name: req.body.name,
          email: req.body.email,
          password: req.body.password,
          passwordConfirm: req.body.passwordConfirm,
        });
        console.log(req.body);
      res.status(201).json({
        status: `Success ?`,
        data: {
          user: newUser,
        },
      });
    };

【讨论】:

  • 感谢 Piyush 的回复。当我在 Postman 中运行你的 sn-p 时,它只是旋转,我必须取消。在控制台中我得到“POST /api/v1/users/signup - - ms - -”
  • // app.use(bodyParser.json()); // 将代码更改为此 // 自动填充字段(id、updatedAt 和 createdAt)已写入数据库,但没有任何 req.body 字段 export.signup = async function (req, res, next) { const newUser = await User.create(req, { name: req.body.name, email: req.body.email, password: req.body.password, passwordConfirm: req.body.passwordConfirm, });控制台.log(req.body); res.status(201).json({状态:Success ?,数据:{用户:新用户,},}); };
  • // Postman 输出:{ "status": "Success ?", "data": { "user": { "id": 9, "updatedAt": "2020-08-07T14: 42:59.009Z", "createdAt": "2020-08-07T14:42:59.009Z" } } }
猜你喜欢
  • 2021-08-15
  • 2017-04-03
  • 2017-01-25
  • 2020-05-24
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2017-08-18
相关资源
最近更新 更多