gpt4 book ai didi

node.js - ejs如何发送一个变量来 Sequelize ?

转载 作者:行者123 更新时间:2023-12-03 22:23:16 25 4
gpt4 key购买 nike

我正在制作一个 node js express 应用程序。我使用 ejs 作为我的模板引擎。
在我的一个 ejs 文件中,我有一个树 View 。这个树 View 有一个事件,当它发生变化时。我使用这个事件来获取树 View 的结构。

$('#tree').on("changed.jstree", async function (e, data) {
var v = $('#tree').jstree(true).get_json('#', {flat:true});
var mytext = JSON.stringify(v);
});

这工作正常并获取我想要的数据。但我也想将它发送到我的数据库。为此,我使用 sequelize。
我首先尝试用这个来更新我的数据库:
                $('#tree').on("changed.jstree", async function (e, data) {
var v = $('#tree').jstree(true).get_json('#', {flat:true});
var mytext = JSON.stringify(v);
<%- world.treeData = v%>
});

world 是从我的 index.js 文件传递​​的,我的路由所在的位置。但是 ejs 不能访问 v 变量,因为 ejs 在 javascript 之前运行。
所以我需要一种方法来获取这个 v 变量到我的数据库。有没有办法做到这一点?

最佳答案

你对客户端和服务器之间的关系有很大的误解。 EJS 不能“发送”任何东西——我只是一个模板引擎。它动态构造一个 HTML 字符串,Express 稍后使用该字符串作为 HTML 文档(当然还有 JS 文件/代码)发送到您的浏览器。在那之后,可以这么说,EJS“不复存在”了。

为了从 JS 事件监听器发送数据,您需要向服务器中的某个端点执行 AJAX 请求,然后该端点将使用 Sequelize 将其存储在数据库中。我给你举个例子:

假设您要注册一个新用户。你的JS:

$('#tree').on("changed.jstree", async function (e, data) {//Let's say you want to register a new user.
var v = $('#tree').jstree(true).get_json('#', { flat: true });
var newUserData = JSON.stringify(v);
fetch('http://localhost:8000/user', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: newUserData,
})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
});

处理此请求的快速路线:
app.post('/user', async function (req, res) {
try {

const newUserData = req.body;

const createdUser = await UserModel.create(newUserData)//This is where Sequelize comes into picture.

res.json({id:createdUser.id})


} catch (error) {
console.log(error)
res.sendStatus(500)
}

})

关于node.js - ejs如何发送一个变量来 Sequelize ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914058/

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