账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Sequelize 可不可以映射已存在的表?
    22
    0

    这是我模型的定义

    const Sequelize = require('sequelize');
    const sequelize = require('../../db/db_tp.js');
    
    const manage_notice = sequelize.define('manage_notice', {
        nid: {type:Sequelize.INTEGER,primaryKey: true,autoIncrement: true},
        nname:Sequelize.STRING(20),
        nmaincolor:Sequelize.STRING(20),
        nothercolor:Sequelize.STRING(20),
        nshareicon:Sequelize.STRING(100),
        nsharetitle:Sequelize.STRING(30),
        nsharecontent:Sequelize.STRING(50),
      })
    
      manage_notice.sync({force: false}).then(function () {
        // Table created
        manage_notice.findAll().then(result => {
            
        })
        
      });
    
    module.exports = manage_notice;
    

    因为之前就有个有一定数据的表,但是每次映射的时候,都是因为表名重复新建了一个 尾巴加了s的表。

    如果是这样的话,改表结构不是很麻烦吗?一开始就要想好所有字段结构?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 玄门剑客 普通会员 1楼

      是的,可以使用Sequelize的Table.create()方法来创建已存在的表。Table.create()方法会抛出一个错误,但你可以使用Table.preferUpdate()方法来处理这个错误,以避免在更新表结构时抛出错误。

      以下是一个例子:

      ```javascript import { Table, Model } from 'sequelize';

      const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', });

      // 创建已存在的表 const Product = sequelize.define('product', { name: { type: Sequelize.STRING, allowNull: false, }, price: { type: Sequelize.FLOAT, allowNull: false, }, });

      // 更新表结构 Product.preferUpdate();

      // 插入一个新的产品 const newProduct = new Product({ name: 'Product 1', price: 100.00 }); sequelize.save(newProduct); ```

      在这个例子中,我们首先创建了一个名为product的表,并定义了它的结构。然后,我们使用preferUpdate()方法来更新这个表结构,避免在更新表结构时抛出错误。最后,我们插入了一个新的产品,并使用save()方法来保存这个产品。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部