【发布时间】:2019-09-08 04:50:53
【问题描述】:
我从 1 天前开始尝试解决这个问题。为什么我的异步函数不等待结果?数据已正确插入数据库,但 graphql 在查询完成之前没有得到结果。
const resolvers = {
register: async (
parent,
{ contact_name, username, password },
{ models }
) => {
const user = {
contact_name,
username,
password
};
const registeredUser = await models.Member.create(user)
try {
if (typeof registeredUser.member_key === 'number') {
return true;
} else {
return false;
}
} catch (error) {
throw new Error(error);
}
}
Member: {
config: (parent, args, { models }) => {
return models.Config.findAll({
where: {
member_key: parent.member_key
}
});
}
}
}
如果我在const registeredUser = await models.Member.create(user) 之后console.log 我得到以下返回:
member {
dataValues:
{ member_key: null,
contact_name: 'Alex',
username: 'tornado',
password:
'$2b$12$6MKWx.LUXXXaIHHIFUp1DuOMkMNLc76HcvTN6ZayLv.a7iG70O3JK' },
_previousDataValues:
{ contact_name: 'Alex',
username: 'tornado',
password:
'$2b$12$6MKWx.LUXXXaIHHIFUp1DuOMkMNLc76HcvTN6ZayLv.a7iG70O3JK',
member_key: null,
member_type: undefined,
email_address: undefined },
_changed:
{ contact_name: false,
username: false,
password: false,
member_key: false,
member_type: false,
email_address: false },
_modelOptions:
{ timestamps: false,
validate: {},
freezeTableName: true,
underscored: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: null,
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: {},
indexes: [],
name: { plural: 'members', singular: 'member' },
omitNull: false,
sequelize:
Sequelize {
options: [Object],
config: [Object],
dialect: [MysqlDialect],
queryInterface: [QueryInterface],
models: [Object],
modelManager: [ModelManager],
connectionManager: [ConnectionManager],
importCache: [Object],
test: [Object] },
hooks: { beforeCreate: [Array] } },
_options:
{ isNewRecord: true,
_schema: null,
_schemaDelimiter: '',
attributes: undefined,
include: undefined,
raw: undefined,
silent: undefined },
isNewRecord: false,
null: 34490 }
并且在最后一行代码中指定了 member_key 但未在 dataValues 中更新,我肯定做错了,但我不知道是什么。 BTW member_key 是常用的 ID,只自定义反映我的旧数据库:)
问题在于,graphql 查询也给了我一个错误,因为它在我从数据库中取回结果之前就完成了,我认为是因为 await 在这一行上不起作用:
const registeredUser = await models.Member.create(user)
【问题讨论】:
标签: node.js sequelize.js