续集更新信息

Sequelize update information

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

的代码

客户端:

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);

API:

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"})
    }
});

出于某种原因,它只运行 select 查询,从不继续更新用户。

Chrome console output

Debug console output

后续模型以防有帮助:

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;
}

您可以试试下面的代码

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

定义模型时我没有看到 webhook 字段

问题出在 API,应该是 router.post

router.post("/updateName", auth, async (req, res) =>{
    const { ime, url } = req.body;
    const uid = req.session.passport.user;
    console.log(ime);
    db.User.findOne({where: {id: uid}})
    .then(record => {
            let values = {
                name: ime,
                webhook: url
            }
            record.update(values).then( updatedRecord => {
                console.log(`updated record ${JSON.stringify(updatedRecord,null,2)}`)
                res.status(200).json({ message: "success"});
                })
        }
    })
    .catch((error) => {
      // do seomthing with the error
      throw new Error(error)
    }) 
});