序列化无效值 Symbol(ne)

Hay*_*rry 2 javascript postgresql node.js express sequelize.js

我在 Express Node.js 服务器上运行了以下两个文件:

主页.js

var express = require('express')
var sequelize = require('sequelize')
var db = require('../../shared/db.js')

var op = sequelize.Op

var router = express.Router()

router.get('/home', function(req, res, next) {
    db.shared.person.findAll({
        where: {
            email: {
                [op.ne]: null
            }
        },
        order: ['id']
    }).then(function (person) {
        res.locals = {
            person: person
        }
        res.render('home')
    })
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)

数据库.js

var sequelize = require('sequelize')

var config = {
  host: 'localhost',
  port: 5432,
  username: '...',
  password: '...',
  database: 'postgres',
  dialect: 'postgres',
  operatorsAliases: false
}
var db = new sequelize(config)

module.exports = {
  shared: {
    person: db.define('person', {
      id: {
        type: sequelize.INTEGER,
        primaryKey: true
      },
      name: sequelize.STRING,
      email: sequelize.INTEGER
    }, { freezeTableName: true , timestamps: false, schema: 'shared' }),
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此查询时,我收到一个错误声明 Unhandled rejection Error: Invalid value { [Symbol(ne)]: null }

我究竟做错了什么?我可以使用$ne,甚至ne很好,但它们已被弃用,使用起来并不完全安全。此外,这不仅仅是[op.ne]- 当我使用任何这样的条件时,我会收到此错误。

我将这一切都建立在本指南的基础上,所以我不确定我在这里做错了什么。

Mar*_*žic 5

Unhandled rejection Error: Invalid value 如果您没有像这样设置字符串别名,也可能会出现:

const Op = Sequelize.Op;
const operatorsAliases = {
  $eq: Op.eq,
  $ne: Op.ne,
  ...
  $any: Op.any,
  $all: Op.all,
  $values: Op.values,
  $col: Op.col
};

const connection = new Sequelize(db, user, pass, { operatorsAliases });
Run Code Online (Sandbox Code Playgroud)

但是,最好从代码中删除基于字符串的别名并使用 [Op.ne],例如,Sequlize 计划很快弃用它们。