首页 > 解决方案 > 续集更新信息

问题描述

我已经为这个问题苦苦挣扎了一天,似乎无法找到解决它的方法。这是我正在运行的代码

客户端:

const nameInput = document.querySelector("#nameInput");
const urlInput = document.querySelector("#urlInput");
const rowAlert = document.querySelector(".alertAppend");
const divAlert = document.createElement("div");

const nameUpdate = async (e) => {
e.preventDefault();
fetch("/auth/updateName", {  
    method: 'POST',  
    headers: {  
      'Content-Type' : 'application/json'
    },  
    body: JSON.stringify({
    name: nameInput,
    url: urlInput,
  })
})
.then(function (data) {  
  console.log('Request success: ', data);  
})  
.catch(function (error) {  
  console.log('Request failure: ', error);  
});
};

submitName.addEventListener("click", nameUpdate);

接口:

router.get("/updateName", auth, async (req, res) =>{
    try {
        const { name, url } = req.body;
        const ime = name;
        const uid = req.session.passport.user;
        db.User.find({ where: { id: uid } })
        .on('success', function (user) {
            if (user) {
            user.update({
                name: ime,
                webhook: url
            })
            .success(function () {})
            }
        })
        res.json({ message: url});
    } catch (err) {
        if (err) res.status(500).json({ message: "Internal Error"})
    }
});

出于某种原因,它只是运行选择查询并且永远不会继续更新用户。

Chrome 控制台输出

调试控制台输出

续集模型以防它有帮助:

module.exports = function (sequelize, DataTypes) {
    var User = sequelize.define("User", {
        email: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true,
            validate: {
                isEmail: true
            }
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        name: {
            type: DataTypes.STRING
        }
    })

    return User;
}

标签: javascriptnode.jsapisequelize.js

解决方案


你可以试试下面的代码

await db.User.update({
   name: ime,
   webhook: url
}, { where: { id: uid } });

定义模型时,我看不到该webhook字段


推荐阅读