续集 setter 错误 'invalid input syntax for integer: "[object Object]"'
Sequelize setter error 'invalid input syntax for integer: "[object Object]"'
我正在尝试使用关联 setter 方法将联系人列表关联到客户,但是,它总是抛出错误 'invalid input syntax for integer: "[object Object]"'。
错误中提到的相关查询是:UPDATE "contactperson" SET "refCustomerId"=,"updatedAt"= WHERE "id" IN ('[object Object]')
我就是这样使用 setter:
db.customer.findByPk(customerID, {
include: [{
model: db.address,
as: 'address',
},{
model: db.contactoption,
as: 'contactOptions',
}, {
model: db.contactperson,
as: 'contactPersons',
}]
}).then(customer => {
customer.setContactPersons([ { firstName: 'tester', lastName: 'tester', description: 'lorem ipsum' } ]);
});
这是协会:
Customer.hasMany(models.contactperson, {
foreignKey: 'refCustomerId',
as: 'contactPersons'
});
知道我做错了什么吗?
您使用 set<ModelName>s
仅更新给定记录的 link 字段。如果您需要创建 contactperson
记录,您需要使用 createContactPerson
而不是 setContactPersons
(注意:您不能一次创建多个记录)。
customer.createContactPerson({
firstName: 'tester',
lastName: 'tester',
description: 'lorem ipsum'
});
比较:
const contactPerson = db.contactperson.findById(1);
if (contactPerson) {
customer.addContactPersons([contactPerson.id]);
}
set<ModelName>s
- 用新的现有记录替换旧的 linked 记录
add<ModelName>s
- 在旧记录之外添加现有记录
create<ModelName>
- 在旧记录之外创建一个新的不存在的记录
我使用以下代码设法解决了这个问题:
db.contactperson.bulkCreate([ { firstName: 'tester', lastName: 'tester', description: 'lorem ipsum' } ]).then(newContactPersons => {
customer.setContactPersons(newContactPersons);
});
这是一种比预期更复杂的方法,但它完成了工作。
正是阿纳托利发布的内容。
我在 TypeScript 上声明了如下方法:
declare addPost: HasManyCreateAssociationMixin<PostClass, 'userId'>;
当我改为:
declare createPost: HasManyCreateAssociationMixin<PostClass, 'userId'>;
一切正常,所以请记住 - 您如何描述非常必要的方法名称。
我正在尝试使用关联 setter 方法将联系人列表关联到客户,但是,它总是抛出错误 'invalid input syntax for integer: "[object Object]"'。
错误中提到的相关查询是:UPDATE "contactperson" SET "refCustomerId"=,"updatedAt"= WHERE "id" IN ('[object Object]')
我就是这样使用 setter:
db.customer.findByPk(customerID, {
include: [{
model: db.address,
as: 'address',
},{
model: db.contactoption,
as: 'contactOptions',
}, {
model: db.contactperson,
as: 'contactPersons',
}]
}).then(customer => {
customer.setContactPersons([ { firstName: 'tester', lastName: 'tester', description: 'lorem ipsum' } ]);
});
这是协会:
Customer.hasMany(models.contactperson, {
foreignKey: 'refCustomerId',
as: 'contactPersons'
});
知道我做错了什么吗?
您使用 set<ModelName>s
仅更新给定记录的 link 字段。如果您需要创建 contactperson
记录,您需要使用 createContactPerson
而不是 setContactPersons
(注意:您不能一次创建多个记录)。
customer.createContactPerson({
firstName: 'tester',
lastName: 'tester',
description: 'lorem ipsum'
});
比较:
const contactPerson = db.contactperson.findById(1);
if (contactPerson) {
customer.addContactPersons([contactPerson.id]);
}
set<ModelName>s
- 用新的现有记录替换旧的 linked 记录
add<ModelName>s
- 在旧记录之外添加现有记录
create<ModelName>
- 在旧记录之外创建一个新的不存在的记录
我使用以下代码设法解决了这个问题:
db.contactperson.bulkCreate([ { firstName: 'tester', lastName: 'tester', description: 'lorem ipsum' } ]).then(newContactPersons => {
customer.setContactPersons(newContactPersons);
});
这是一种比预期更复杂的方法,但它完成了工作。
正是阿纳托利发布的内容。 我在 TypeScript 上声明了如下方法:
declare addPost: HasManyCreateAssociationMixin<PostClass, 'userId'>;
当我改为:
declare createPost: HasManyCreateAssociationMixin<PostClass, 'userId'>;
一切正常,所以请记住 - 您如何描述非常必要的方法名称。