Express 需要帮助吗,车把

Express 需要帮助吗,车把,express,handlebars.js,Express,Handlebars.js,我正在创建一个带有手柄的简单JSExpress博客,我希望只有在撰写评论的用户登录后才能删除评论,因此我需要创建一个帮助器来检查登录用户的Id是否与评论的作者Id相同,我已经读了一整天了,仍然不知道应该在哪里编写handlebar.RegisterHelper()函数,在这之前我还应该做什么或包括什么,在哪里(在哪个文件中),如果有一个分步指南找不到,或者,如果有人不能向我解释,我会非常高兴 我假设您使用的是expresshbs,但其他Handlebar express实现应该是相同的 一旦你做

我正在创建一个带有手柄的简单JSExpress博客,我希望只有在撰写评论的用户登录后才能删除评论,因此我需要创建一个帮助器来检查登录用户的Id是否与评论的作者Id相同,我已经读了一整天了,仍然不知道应该在哪里编写handlebar.RegisterHelper()函数,在这之前我还应该做什么或包括什么,在哪里(在哪个文件中),如果有一个分步指南找不到,或者,如果有人不能向我解释,我会非常高兴

我假设您使用的是
expresshbs
,但其他Handlebar express实现应该是相同的

一旦你做了几次,这就很简单了。这里有一个例子:

const hbs = require('express-hbs');

hbs.registerHelper("boolToCheckbox", function boolToCheckbox(bool) {
  if (bool) return "checked";
});
在上面的示例中,我将Java对象布尔字段转换为“checked”,以便在HTML复选框变量中使用。它的用法的一个例子是

<input type="checkbox" id="isMaintainer" name="is_maintainer" {{boolToCheckbox is_maintainer}}>

非常简单,registerHelper应该接受一个字符串,这个字符串是您将在Handlebar中用来调用函数的名称,然后是函数。函数本身将接受您传递给它的任何内容(在上面的例子中,它是一个名为
is\u maintainer
的布尔属性),并将返回您告诉它的任何内容。这可能是更复杂的HTML代码,也可能是像字符串这样简单的东西


在您的情况下,您的函数可能会接收user和author对象,比较ID字段并返回true或false。然后,您可以在if语句中使用它来确定是否显示HTML元素。

我知道帮助程序应该是什么样子,但我不知道应该在哪个文件中添加代码,以便可以从我的hbs文件中看到它,应该是在某个控制器或app.js文件中还是在其他地方,无论我把它放在哪里,它都会抛出一个错误helper Missing helper:“helperName”如果你使用的是express hbs,那么你的应用程序中加载的任何文件都会出现错误。因此,可能是index.js/app.js,或者是您设置express的某个地方。如果您使用的是另一个库,那么您可以访问Handlebar对象的任何地方,也就是index.js/app.js(安装express的地方)。尽管您可能希望在构建越来越多的帮助程序时将其拉入新文件中。我的错误一直都是在require上,当我像这样使用const hbs=require('hbs')时,它工作得很好,感谢您的提示