【问题标题】:Can't update(nor save) existing row using Sequelize无法使用 Sequelize 更新(或保存)现有行
【发布时间】:2019-03-13 03:32:59
【问题描述】:

当尝试.update().save() 一行时,我收到此错误:

Unhandled rejection Error: You attempted to save an instance with no primary key,
this is not allowed since it would result in a global update

我尝试了文档用作示例的所有 4 种方法(定义和不定义我要保存的属性),但没有任何效果。 这是我的实际更新代码:

Sydney.databases.guilds.findOrCreate({
  attributes: ['guildLocale'],
    where: {
      guildID: _guild.id,
    },
    defaults: {
      guildID: _guild.id,
      guildLocale: 'en_US',
      guildPrefix: '?',
    },
  }).spread((guild, created) => {
    guild.update({guildLocale: args[1]})
      .then(() => console.log(7))
      .catch((e) => throw e);
  });

这是公会模式:

let model = sequelize.define('guild', {
  guildID: {
    field: 'guild_id',
    type: DataTypes.STRING,
    primaryKey: true,
  },
  guildLocale: {
    field: 'guild_locale',
    type: DataTypes.STRING,
  },
  guildPrefix: {
    field: 'guild_prefix',
    type: DataTypes.STRING,
  },
}, {tableName: 'guilds'});

我在这里错过了什么?

【问题讨论】:

    标签: javascript node.js sqlite sequelize.js


    【解决方案1】:

    好的,所以问题似乎.findOrCreate() 方法中的attributes: ['guildLocale']。老实说,我不知道为什么会再次阅读该文档以确定,但如果另一个新手遇到问题,我会留下这个答案,;P...

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。当您指定要从数据库中获取的属性而不包括属性中的主键时,就会发生这种情况。而当你尝试保存时,会抛出如下错误:

      Unhandled rejection Error: You attempted to save an instance with no primary key, this is not allowed since it would result in a global update

      所以简单的解决方案是在属性中包含主键,如下所示:

      Sydney.databases.guilds.findOrCreate({
        attributes: ['guildLocale', 'guildID'], // include guideID here!!
          where: {
            guildID: _guild.id,
          },
          defaults: {
            guildID: _guild.id,
            guildLocale: 'en_US',
            guildPrefix: '?',
          },
        }).spread((guild, created) => {
          guild.update({guildLocale: args[1]})
            .then(() => console.log(7))
            .catch((e) => throw e);
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 2018-09-29
        相关资源
        最近更新 更多