How to fix : In Migration, a raw query sequelize ad backslash escape in varchar which cause error while inserting that value in database

China☆狼群 提交于 2020-02-07 05:25:08

问题


The migration selects data from one table and inserts the data into another table. While inserting, the sequelize adds backslash escape in varchar 'v_occupation' value which is throwing error in insertion.

I have tried replacements and replace on v_occuption but all in vain

const queryToUpdateExistingTable = 
`INSERT INTO social_profile ( fk_user_id , fk_marital_status_id ,fk_military_service_id , v_occupation , fk_education_id , v_bio ,v_pets ,v_places_lived ) 
VALUES (:fk_user_id , :fk_marital_status_id, :fk_military_service_id, :v_occupation , :fk_education_id , :v_bio, :v_pets , :v_places_lived) 
return queryInterface.sequelize.query(queryToUpdateExistingTable, 
{type: queryInterface.sequelize.QueryTypes.INSERT,
replacements: {fk_user_id: uProfileData.id ,
               fk_marital_status_id:uProfileData.fk_marital_status_id,
                                fk_military_service_id: uProfileData.fk_military_service_id,
                                v_occupation: uProfileData.v_occupation,
                                fk_education_id: uProfileData.fk_education_id,
                                v_bio: uProfileData.v_bio,
                                v_pets: uProfileData.v_pets,
                                v_places_lived: uProfileData.v_places_lived
                            }});});

回答1:


Try adding the v_occupation directly into the query string instead of using replacements. You can insert it by using + to add the strings or use Template String to insert values using placeholders in strings enclosed by backticks.

const queryToUpdateExistingTable = `
INSERT INTO social_profile 
(
    fk_user_id,
    fk_marital_status_id,
    fk_military_service_id,
    v_occupation,
    fk_education_id,
    v_bio,
    v_pets,
    v_places_lived
)
VALUES 
(
    :fk_user_id,
    :fk_marital_status_id,
    :fk_military_service_id,
    ${uProfileData.v_occupation},
    :fk_education_id,
    :v_bio,
    :v_pets,
    :v_places_lived
)`
return queryInterface.sequelize.query(queryToUpdateExistingTable, {
    type: queryInterface.sequelize.QueryTypes.INSERT,
    replacements: {
        fk_user_id: uProfileData.id,
        fk_marital_status_id: uProfileData.fk_marital_status_id,
        fk_military_service_id: uProfileData.fk_military_service_id,
        fk_education_id: uProfileData.fk_education_id,
        v_bio: uProfileData.v_bio,
        v_pets: uProfileData.v_pets,
        v_places_lived: uProfileData.v_places_lived
    }
})


来源:https://stackoverflow.com/questions/58707210/how-to-fix-in-migration-a-raw-query-sequelize-ad-backslash-escape-in-varchar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!