我有一个现有的数据库,我想从“User”表中检索,但User表与“PlayerStats”表有一对一的关系。我想将User对象以及它的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;
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) => {
socket.join(room);
console.log("client has joined");
});
socket.on('disconnect', () => {
console.log("client has disconnect");
});
});
}
请告诉我怎么做好吗。