gpt4 book ai didi

node.js - Sequelize Query 返回奇怪的模型

转载 作者:行者123 更新时间:2023-12-03 22:27:44 26 4
gpt4 key购买 nike

当我使用 sequelize 进行查询时,例如这样

let User  = require('../models').User;
...
User.findOne({ where:{ email : email }}).then( user => {
console.log(user);
})

那里返回的用户对象看起来很奇怪并且有一些负面影响。它看起来像这样(链接因为太长):

https://pastebin.com/HLVHVetN

因此,我无法像许多示例所示那样执行 user.email 或 user.instanceMethod 之类的操作。更糟糕的是,当我尝试调用实例方法时, this 引用的是函数,而不是模型。

我究竟做错了什么?

编辑:这是我的用户模型的外观
'use strict';
let Sequelize = require('sequelize');
let bcrypt = require('bcrypt');

module.exports = (sequelize, DataTypes) => {


let User = sequelize.define('User', {
email: {
type: Sequelize.STRING(100), allowNull: true, unique: true,
validate: {
isEmail: {
msg: 'No es una dirección de correo electrónico.'
},
}
},
google_id: {type: Sequelize.STRING(100)},

facebook_id: {type: Sequelize.STRING(100)},
password_digest: {
type: Sequelize.STRING,
},
password: {
type: Sequelize.VIRTUAL,
allowNull: true,
validate: {
len: [6, Infinity]
}
},
password_confirmation: {
type: Sequelize.VIRTUAL
},

token_reset: {type: Sequelize.STRING(100)},
token_confirm: {type: Sequelize.STRING(100)},
browser_key: {type: Sequelize.STRING(100)},
registry_ip: {type: Sequelize.STRING(60)},
registry_date: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
account_confirmed: {type: Sequelize.BOOLEAN, defaultValue: false},
terms_accepted: {type: Sequelize.BOOLEAN, allowNull: false},
account_active: {type: Sequelize.BOOLEAN, defaultValue: true},
current_ip: {type: Sequelize.STRING(60)},
login_date: {type: Sequelize.DATE, defaultValue: Sequelize.NOW}
}, {
freezeTableName: true,
indexes: [{unique: true, fields: ['email']}],
instanceMethods: {
authenticate: function (value) {
console.log("THIS",this);
console.log("comparing passwords",value, this.password_digest);
if (bcrypt.compareSync(value, this.password_digest))
return this;
else
return false;
}
}
});`

最佳答案

在 sequelize promise 中,您将从 dataValues 中获取属性。所以如果你想在同一个 thenable promise 中访问User.dataValues.email并且肯定这将指向 Sequelize 对象
如果您不想使用该 promise ,则需要返回值并在其他函数中使用。
另一种方法是使用 raw:true

User.findOne({raw:true,  where:{ email :  email }}).then( user => {
console.log(user);
})

关于node.js - Sequelize Query 返回奇怪的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50536056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com