Sequelize.js Sequelizejs:未处理的拒绝SequelizeDatabaseError:列user.playerstatsId不存在

Sequelize.js Sequelizejs:未处理的拒绝SequelizeDatabaseError:列user.playerstatsId不存在,sequelize.js,Sequelize.js,我有一个现有的数据库,我想从表“User”中检索,但是User表与“PlayerStats”表有一对一的关系。我想将用户对象以及它的Playerstats作为Json对象而不是外键Id检索。在编写代码并运行代码后,控制台中出现一个错误,显示: Sat, 05 May 2018 02:18:26 GMT sequelize deprecated String based operators are now deprecated. Please use Symbol based operat

我有一个现有的数据库,我想从表“User”中检索,但是User表与“PlayerStats”表有一对一的关系。我想将用户对象以及它的Playerstats作为Json对象而不是外键Id检索。在编写代码并运行代码后,控制台中出现一个错误,显示:

    Sat, 05 May 2018 02:18:26 GMT sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators at node_modules\sequelize\lib\sequelize.js:242:13
Executing (default): SELECT "user"."id", "user"."address", "user"."bio", "user"."country", "user"."email", "user"."firstname", "user"."gender", "user"."lastname", "user"."locked", "user"."money", "user"."onlinestatus", "user"."password", "user"."phonenumber", "user"."picture", "user"."username", "user"."usertype", "user"."playerstatsId", "playerstats"."id" AS "playerstats.id", "playerstats"."time" AS "playerstats.time", "playerstats"."expenses" AS "playerstats.expenses", "playerstats"."friends" AS "playerstats.friends", "playerstats"."loss" AS "playerstats.loss", "playerstats"."matchplayed" AS "playerstats.matchplayed", "playerstats"."profit" AS "playerstats.profit", "playerstats"."readmessage" AS "playerstats.readmessage", "playerstats"."referrals" AS "playerstats.referrals", "playerstats"."referrer" AS "playerstats.referrer", "playerstats"."totalmessage" AS "playerstats.totalmessage", "playerstats"."unreadmessage" AS "playerstats.unreadmessage", "playerstats"."wallet" AS "playerstats.wallet", "playerstats"."wins" AS "playerstats.wins" FROM "users" AS "user" LEFT OUTER JOIN "playerstats" AS "playerstats" ON "user"."playerstatsId" = "playerstats"."id" LIMIT 1;
Unhandled rejection SequelizeDatabaseError: column user.playerstatsId does not exist
据我所知,我觉得sequelize正在尝试将用户和Playerstats表连接在一起

这是我的用户代码:

  var Sequelize = require('sequelize');

var db = require('../database/postgres');


var User =db.define('user', {

    id: {
        type: Sequelize.INTEGER,
        allowNull: false,
        primaryKey: true
    },

    address: {
        type: Sequelize.STRING,
        field: 'address'
    },

    bio: {
        type: Sequelize.STRING,
        field: 'bio'
    },

    country: {
        type: Sequelize.STRING,
        field: 'country'
    },

    email: {
        type: Sequelize.STRING,
        field: 'email'
    },

    firstname: {
        type: Sequelize.STRING,
        field: 'firstname'
    },

    gender: {
        type: Sequelize.STRING,
        field: 'gender'
    },

    lastname: {
        type: Sequelize.STRING,
        field: 'lastname'
    },

    locked: {
        type: Sequelize.BOOLEAN,
        field: 'locked'
    },

    money: {
        type: Sequelize.DOUBLE,
        field: 'money'
    },

    onlinestatus: {
        type: Sequelize.STRING,
        field: 'onlinestatus'
    },

    password: {
        type: Sequelize.STRING,
        field: 'password'
    },

    phonenumber: {
        type: Sequelize.STRING,
        field: 'phonenumber'
    },

    picture: {
        type: Sequelize.STRING,
        field: 'picture'
    },

    username: {
        type: Sequelize.STRING,
        field: 'username'
    },

    usertype: {
        type: Sequelize.STRING,
        field: 'usertype'
    },



}, {
    tableName: 'users',

    timestamps: false
});


module.exports = User;
我的PlayerStats代码:

    var Sequelize = require('sequelize');

var db = require('../database/postgres');


var PlayerStats =db.define('playerstats', {

    id: {
        type: Sequelize.INTEGER,
        field: 'id',
        allowNull: false,
        primaryKey: true
    },

    time: {
        type: Sequelize.DATE,
        field: 'time'
    },

    expenses: {
        type: Sequelize.DOUBLE,
        field: 'expenses'
    },

    friends: {
        type: Sequelize.INTEGER,
        field: 'friends'
    },

    loss: {
        type: Sequelize.INTEGER,
        field: 'loss'
    },

    matchplayed: {
        type: Sequelize.INTEGER,
        field: 'matchplayed'
    },

    profit: {
        type: Sequelize.DOUBLE,
        field: 'profit'
    },

    readmessage: {
        type: Sequelize.INTEGER,
        field: 'readmessage'
    },

    referrals: {
        type: Sequelize.INTEGER,
        field: 'referrals'
    },

    referrer: {
        type: Sequelize.INTEGER,
        field: 'referrer'
    },

    totalmessage: {
        type: Sequelize.INTEGER,
        field: 'totalmessage'
    },

    unreadmessage: {
        type: Sequelize.INTEGER,
        field: 'unreadmessage'
    },

    wallet: {
        type: Sequelize.DOUBLE,
        field: 'wallet'
    },

    wins: {
        type: Sequelize.INTEGER,
        field: 'wins'
    }

}, {
    tableName: 'playerstats',

    timestamps: false
});


module.exports = PlayerStats;
最后一个运行它们的主js类:

    var io = require('socket.io')(process.env.PORT || 4000);

var User = require('./server/entities/user');

var PlayerStats = require('./server/entities/playerstats');





new Server();

const room = 'quick-chat';

function Server() {


    User.belongsTo(PlayerStats,{as: 'playerstats'});


    User.findOne({include: [{

        model: PlayerStats,

        as: 'playerstats'

    }]}).then(function (user) {

        console.log(user);

    });


    var global = this;



    io.on('connection',function(socket){

        console.log("A client has connected");

        socket.on('join', (data) => {

            //todo connect to the gambeat db and update the users info to online

            socket.join(room);

            console.log("client has joined");

        });

        socket.on('disconnect', () => {

            console.log("client has disconnect");

        });

    });



}

你能告诉我怎么做吗

我找到了问题所在,基于此

默认情况下,将根据目标型号名称和目标主键名称生成belongsTo关系的外键。 默认大小写为camelCase,但是如果源模型配置了下划线:true,则foreignKey将为snake_大小写

这导致了“playerstatsId”,而我的用户表中没有它。您可以通过使用外键选项为外键指定正确的名称来更正此问题。因此

User.belongsTo(PlayerStats,{foreignKey: 'playerstats',as: 'playerstat'});

我发现了问题,基于这个

默认情况下,将根据目标型号名称和目标主键名称生成belongsTo关系的外键。 默认大小写为camelCase,但是如果源模型配置了下划线:true,则foreignKey将为snake_大小写

这导致了“playerstatsId”,而我的用户表中没有它。您可以通过使用外键选项为外键指定正确的名称来更正此问题。因此

User.belongsTo(PlayerStats,{foreignKey: 'playerstats',as: 'playerstat'});