javascript - 续集:instance.get 不是函数
问题描述
我有这段代码可以查询我的反馈模型下的所有数据
const result = await models.Feedback.findOne({
include: [{
association: models.Feedback.Point,
order: [["date_saved", "DESC"]],
// where: { version_id: { [Op.not]: null } },
include: [{
association: models.Point.Creator
}, {
association: models.Point.User,
}, {
association: models.Point.Comment,
}]
}, {
association: models.Feedback.Project,
where: { subscription_id: currentUser.subscription_id }
}, {
association: models.Feedback.User,
include: [{
association: models.ProjectTeam.User
}]
}],
where: { id },
});
console.log(result.get({plain:true})'
它给了我一个错误result.get is not a function
。我不知道为什么我不能使用 get 功能。但是从我的其他查询中,我可以使用 get 函数。我不知道为什么这段代码会给我一个错误。
编辑:
结果的值为
ep_tblfeedback {
dataValues:
{ id: 239,
proj_id: 20006,
title: 'sample',
status: 'Open',
date_saved: 2019-08-07T09:41:16.000Z,
title_trans: null,
Points: [ [ep_tblpoint] ],
Project:
ep_tblproject {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false },
Users:
[ [ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team] ] },
_previousDataValues:
{ id: 239,
proj_id: 20006,
title: 'sample',
status: 'Open',
date_saved: 2019-08-07T09:41:16.000Z,
title_trans: null,
Points: [ [ep_tblpoint] ],
Project:
ep_tblproject {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false },
Users:
[ [ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team],
[ep_tblproject_team] ] },
_changed: {},
_modelOptions:
{ timestamps: false,
validate: {},
freezeTableName: false,
underscored: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: { id: 239 },
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: {},
indexes: [],
name: { plural: 'ep_tblfeedbacks', singular: 'ep_tblfeedback' },
omitNull: false,
tableName: 'ep_tblfeedback',
sequelize:
Sequelize {
options: [Object],
config: [Object],
dialect: [MysqlDialect],
queryInterface: [QueryInterface],
models: [Object],
modelManager: [ModelManager],
connectionManager: [ConnectionManager],
importCache: [Object] },
hooks: {} },
_options:
{ isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
include: [ [Object], [Object], [Object] ],
includeNames: [ 'Points', 'Project', 'Users' ],
includeMap: { Points: [Object], Project: [Object], Users: [Object] },
includeValidated: true,
attributes:
[ 'id', 'proj_id', 'title', 'status', 'date_saved', 'title_trans' ],
raw: true },
isNewRecord: false,
Points:
[ ep_tblpoint {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
Creator: [ep_tblusers],
Users: [Array],
comments: [Array] } ],
Project:
ep_tblproject {
dataValues:
{ id: 20006,
proj_name: 'exactplace',
client_id: 291,
proj_nr: 'ep-01',
subscription_id: 1000,
status: 'Open' },
_previousDataValues:
{ id: 20006,
proj_name: 'exactplace',
client_id: 291,
proj_nr: 'ep-01',
subscription_id: 1000,
status: 'Open' },
_changed: {},
_modelOptions:
{ timestamps: false,
validate: {},
freezeTableName: false,
underscored: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: [Object],
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: {},
indexes: [],
name: [Object],
omitNull: false,
tableName: 'ep_tblproject',
sequelize: [Sequelize],
hooks: {} },
_options:
{ isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
include: undefined,
includeNames: undefined,
includeMap: undefined,
includeValidated: true,
raw: true,
attributes: undefined },
isNewRecord: false },
Users:
[ ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] },
ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] },
ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] },
ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] },
ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] },
ep_tblproject_team {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
isNewRecord: false,
ep_tbluser: [ep_tblusers] } ] }
如果我使用 result.dataValues 或 result.get('field') 作品。但是 result.get({plain: true}) 不起作用。我想使用后者,因为这是我从我的 GraphQLObjectTypes 声明的,如果我要更改它的所有功能,那将是一项太多的工作。
我想知道是什么导致了这个错误,让它工作。
编辑(2): 我发现从我的前端,Apollo React 会导致错误。我不知道错误的逻辑是什么,但是重新排列字段可以解决问题。
export const FEEDBACK_QUERY = (id) => gql`
{
feedback (id: ${id}) {
id
title
proj_id
proj_name
clientname
date_saved
versions {
id
version_name
__typename @include(if: false)
}
points {
id
point_nr
version_name
time_approve
time_estimate
priority
team {
id
name
project_role
__typename @include(if: false)
}
instructions
inst_engtrans
status
deadline
creator
comments {
id
user_id
comments
date_commented
__typename @include(if: false)
}
ack
date
__typename @include(if: false)
}
team {
id
name
email
project_role
__typename @include(if: false)
}
__typename @include(if: false)
}
}
`;
仍然不知道为什么重新排列字段可以修复它。
解决方案
另一种方法是raw:true, nest:true
:
const result = await models.Feedback.findOne({
include: [
...
],
where: {
...
},
raw : true ,
nest : true
});
推荐阅读
- image - 从旧硬盘中检索 docker 镜像
- c# - MySQL C# Query using MySql.Data.MySqlClient::MySqlCommand 字符串格式问题
- c - 如何“丢弃”换行符?
- window - 如何查看或打开 Microsoft Windows 8 AMCache Registry Hive?
- reactjs - 选择后如何将图像/视频上传到 S3?
- gmail-api - 使用 Gmail API 线程 ID 链接到特定线程
- sql - 使用多个联接时如何调整左联接和子查询以修复不正确的 SUMS
- ruby-on-rails - 在控制器中找不到Rails 5自定义模块功能
- java - 为什么 Jackson XML 反序列化不尊重任何注释?
- amazon-web-services - 如何将beantalk应用程序连接到rds数据库