Я создаю родительский и дочерний экземпляр, используя sequlize, но он вызывает следующую ошибку.Невозможно создать дочерний экземпляр для одного-ко-многим в Sequelize.js
Site.hasMany(Group,{as:'groups'});
Group.belongsTo(Site);
//not working
Site.create(siteData).then((site)=>{
site.addGroups(groupData).then(()=>{ //also tried addGroup
next();
});
});
//this works
Site.create(siteData).then((site)=>{
groupData.SiteId=site.id;
Group.create(groupData).then(()=>{
next();
});
});
Ошибка:
Unhandled rejection TypeError: val.replace is not a function at Object.SqlString.escape (c:\APi\node_modules\sequelize\lib\sql-string.js:61:15) at Object.QueryGenerator.escape (c:\APi\node_modules\sequelize\lib\dialects\abstract\query-generator.js:983:22)
Я не уверен, что это необходимо для его работы, но вы попытались создать экземпляр Groupelize Group, а затем запустить группы добавления? var instance = Site.build (groupData) и передать этот экземпляр в addGroups. И как выглядят схемы ваших таблиц для сайта и группы? Как вы писали отношения в продолжении? –
Привет @CameronBillings, только группа работает, даже второй вариант работает, как показано в моем коде выше. Я создал отношение, используя первую две строки, как я показал выше. Однако я удалил некоторый код, который синхронизирует схему, чтобы сохранить код выше простого. Могу ли я узнать, что делает этот Site.build (groupData)? в соответствии с схемой. В таблице «Моя группа» есть SiteId. – CreativeManix
Group.build (groupData) просто вернет экземпляр Sequelize объекта Group с помощью groupData. Таким образом, он будет прикреплять методы Sequelize и такие к экземпляру. Метод addAssociation() может ожидать, что будет содержать экземпляр Sequelize, а не просто простой объект, который «представляет» экземпляр Sequelize.http: //docs.sequelizejs.com/en/latest/docs/instances/ –