gpt4 book ai didi

express - 了解 Sequelize 中的钩子(Hook)(返回与附加)

转载 作者:行者123 更新时间:2023-12-03 22:20:04 28 4
gpt4 key购买 nike

我正在关注我学校关于如何整合 Sequelize 的研讨会与 Express .有一个部分我们正在学习利用 hooks 在我们的模型中——我对此感到困惑:

Returning vs. Attaching

A hook runs with the instance of a Page being saved given as an argument. We want to, therefore, attach a created urlTitle to this page instance instead of returning it from the function.


var Sequelize = require('sequelize');
var db = new Sequelize('postgres://localhost:5432/__wikistack__', {
logging: false,
});

const Page = db.define(
'page',
{
title: {
type: Sequelize.STRING,
},
urlTitle: {
type: Sequelize.STRING,
},
content: {
type: Sequelize.TEXT,
},
status: {
type: Sequelize.ENUM('open', 'closed'),
},
},
{
hooks: {
beforeValidate: function(page) {
if (page.title) {
// Removes all non-alphanumeric characters from title
// And make whitespace underscore
return (page.urlTitle = page.title.replace(/\s/g, '_').replace(/\W/g, ''));
} else {
// Generates random 5 letter string
return (urlTitle = Math.random()
.toString(36)
.substring(2, 7));
}
},
},
}
);

有人可以解释一下吗?钩子(Hook)里的函数怎么能不返回东西呢?上面的工作,所以钩子(Hook)/函数正在返回一些东西。

提前致谢!

最佳答案

Hook 只是在记录实例的某些生命周期点运行的代码。你可以让它们成为纯粹的副作用。在您的情况下,您需要做的就是修改传递钩子(Hook)的页面对象,返回没有帮助或伤害。

然而,一个钩子(Hook)的返回值并不是没有用的。如果你需要在钩子(Hook)中做任何异步操作,你必须返回一个 promise 。

关于express - 了解 Sequelize 中的钩子(Hook)(返回与附加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875767/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com