gpt4 book ai didi

javascript - 在 EJS 模板中,为什么 Javascript Promise 在写入第 1 行时可以工作,但在写入第 3 行时失败?

转载 作者:行者123 更新时间:2023-12-02 22:59:21 25 4
gpt4 key购买 nike

以下代码行搜索 mongodb 数据库并返回一个 promise 。当包含在 app.js 中时,它会按预期工作。

User.findOne({ data: 'random string'}).then().catch();

当 EJS 模板中包含同一行代码时,它也会按预期工作。

<% User.findOne({ data: 'random string'}).then().catch(); %>

但是,当它在 EJS 模板中分成 3 个单独的行时,它会引发错误。

<% User.findOne({ data: 'random string'}) %> 
<% .then() %>
<% .catch(); %>

SyntaxError: Unexpected token . in C:\fileLocation\index.ejs while compiling ejs

问题:为什么会这样?显然我误解了 EJS 机制的一个重要部分。

最佳答案

问题不在于它位于不同的行,而在于它位于不同的<% %>代码块。你不能这样做,因为它们之间应该能够有内容,而当代码必须是连续的时,这是没有意义的。 (在这种情况下,它们之间甚至有内容:空白。)

跨多行应该没问题:

<% User.findOne({ data: 'random string' })
.then()
.catch(); %>

此时您可能会遇到 Promise 在模板中无用的问题。不过,总的来说,让他们远离查询是一个好主意。

关于javascript - 在 EJS 模板中,为什么 Javascript Promise 在写入第 1 行时可以工作,但在写入第 3 行时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57846939/

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