1

我使用命令“express -e sample”创建了一个简单的 node.js 项目。

我在 /public 目录下有我的 javascript、css 文件和在视图下的 ejs 文件,我的 server.js 在根目录中。

我创建了一个表单页面,当用户提交它时,我在 /public/javascripts 下的一个 js 文件中调用一个函数。

一切都很完美。我现在想将表单输入保存到我的数据库(mysql)中,所以我尝试获取 mysql 但它失败了。警报声明说该对象未定义。

var database = require('mysql').Client;

但是,相同的命令在 server.js 中运行良好。它打印我的数据库属性。

4

1 回答 1

1

<input type="submit" onclick="processFormData();"/>processFormData();是在用户单击按钮后在客户端(在浏览器中)调用函数的代码。

因此,var database = require('mysql').Client;也在客户端上执行。

显然,require浏览器中没有;即使浏览器中有requiremysql库 - 可能您仍然希望从服务器而不是客户端更改数据库(而不是向客户端发送您的数据库凭据)。

为此,您应该:

  1. 移除onclick处理程序,让用户提交表单;
  2. 在服务器上,处理提交的表单数据并使用 DB 做任何你想做的事情。

或者,如果您想使用当前的“一次编写,随处运行”的方法,您可能会对MeteorOPA 语言等替代平台感兴趣

于 2012-08-03T06:43:40.590 回答