插入一个字母大写字母时,Sequelize returns 小写字母?

Sequelize returns lowercase letter when inserting a one letter uppercase letter?

sequelize插入一个大写字母时,怎么插入returns一个小写字母?

示例:我插入 "N" 并保存 "n" 而不是 "N"。

我插入了以下内容:

  console.log(toBeInserted) // let's say toBeInserted = "N" 
  db.dataset.findOrCreate({
    where:{
      name: toBeInserted
    }
  })
  .spread(function(inserted, created) {
    console.log(inserted); //here I get back inserted = "n"
  })

查看 SQL 数据库,我可以看到存储了 "n" 而不是 "N"

但是一旦输入值至少包含两个字母,sequelize 就会正确保存它:

  console.log(toBeInserted) // toBeInserted = "Hi" 
  db.dataset.findOrCreate({
    where:{
      name: toBeInserted
    }
  })
  .spread(function(inserted, created) {
    console.log(inserted); //here I get back inserted = "Hi"
  })

在数据库中,值 "Hi" 已正确保存。

任何人都可以向我解释为什么会发生这种情况以及如何防止这种情况发生吗?我希望 sequelize 像我插入的那样保存值,即如果我想插入 "N"(大写字母 "N"),它应该保存 "N".

编辑: Sequelize 能够保存小写和大写一个字母的输入。但是,创建方法 findOrCreate() 后似乎无法从小写字母中识别大写字母。

示例:我有一个空数据库并创建了以下输入:

console.log(toBeInserted) // toBeInserted = "A" 
      db.dataset.findOrCreate({
        where:{
          name: toBeInserted
        }
      })
      .spread(function(inserted, created) {
        console.log(inserted + " " + created); //here I get back inserted = "A true"
      })

我检查了我的数据库,确实保存了正确的 upper/lower 大小写。

之后我将创建以下数据:

console.log(toBeInserted) // toBeInserted = "a" 
      db.dataset.findOrCreate({
        where:{
          name: toBeInserted
        }
      })
      .spread(function(inserted, created) {
        console.log(inserted + " " + created); //here I get back inserted = "a false"
      })

我再次检查我的数据库,数据没有改变。

这样做的可能不是续集。我对其进行了测试,但没有重现您描述的行为。你确定你真的在 toBeInserted var 中发送 "N" 而不是 "n" 吗?或者你的数据库中可能有一个触发器或其他东西导致了这个。