Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Http Post和Insert获取参数_Javascript_Jquery_Angularjs_Node.js - Fatal编程技术网

Javascript 如何从Http Post和Insert获取参数

Javascript 如何从Http Post和Insert获取参数,javascript,jquery,angularjs,node.js,Javascript,Jquery,Angularjs,Node.js,我试图捕获用户输入的凭据,并将其用作查询数据库的参数。不幸的是,我对如何编写这个过程有点迷茫。我使用angular、express、node、jQuery和html。我对angular、node和jQuery不是很有经验,所以如果这是一个非常简单的问题,请原谅我;我是来学习的 以下是表单所在的html: <!DOCTYPE html > <html ng-app="token"> <%include header%> <%include navbar%

我试图捕获用户输入的凭据,并将其用作查询数据库的参数。不幸的是,我对如何编写这个过程有点迷茫。我使用angular、express、node、jQuery和html。我对angular、node和jQuery不是很有经验,所以如果这是一个非常简单的问题,请原谅我;我是来学习的

以下是表单所在的html:

<!DOCTYPE html > 
<html ng-app="token">
<%include header%>
<%include navbar%>
<div ng-controller="TokenCtrl">
<form ng-submit="submitLogin(loginForm)" role="form" ng-init="loginForm = {}">
<div class="form-group">
<label>email</label>
<input type="email" name="email" ng-model="loginForm.email" required="required" class="form-control"/>
</div>
<div class="form-group">
<label>password</label>
<input type="password" name="password" ng-model="loginForm.password" required="required" class="form-control"/>
</div>
<button class="btn btn-primary btn-lg" ng-click="handleLoginBtnClick()">Sign in</button>
</form>
</div>
</body>
运行此函数时,它会导致以下url:

'/auth/sign_in/:email/:password'
使用Express,我将此url路由到另一个函数。以下是路线代码:

app.post('/users/auth/sign_in/:email/:password', routes.verifyusers);
导致,

exports.verifyusers= function(req, res) {
models.user.find({
where: {
  email: req.params.email,
  password: req.params.password
}
 }).then(function(user) {
    if(user) {
        console.log("alright !")
    };
});
};
当代码运行时,这是我在控制台中得到的:

Executing (default): SELECT "id", "username", "email", "password",    "createdAt", "updatedAt" FROM "users" AS "user" WHERE "user"."email" =   ':email' AND "user"."password" = ':password' LIMIT 1;
:email
:password

这是一个与表单数据无关的结果。

我认为问题来自emailSignInPath:“/auth/sign\u in/:email/:password”

你应该试试看

// config
emailSignInPath: '/auth/sign_in'

// route declaration
app.post('/users/auth/sign_in', routes.verifyusers);

// route action
exports.verifyusers = function(req, res) {
  models.user.find({
    where: {
      email: req.body.email,
      password: req.body.password
    }
  }).then(function(user) {
    if(user) {
      console.log("alright !")
    };
  });
};

ps:别忘了在你的应用程序中声明一个主体解析器。useexpress.bodyParser

你发布的代码有什么问题?我不知道你的问题是什么。。。作为补充说明,您应该在将密码发送到数据库之前对其进行哈希处理。请参阅更新,抱歉。当我运行代码时,我不会捕获并插入表单数据-我只会根据url获得结果,即:email和:password我不知道想要$auth.submitLogin正在做什么,但它似乎完全像/users/auth/sign\u in/:email/:password那样调用url是的。我不知道如何将表单数据作为参数插入url,就像这样。对不起,前面的消息太快了,我想问$auth.submitLogin在做什么?您是否也签入了req.query?结果是:执行默认值:选择id、用户名、电子邮件、密码、createdAt、updatedAt FROM users AS user,其中user.email=NULL和user.password=NULL LIMIT 1;我编辑后提到了bodyparser你有中间件吗?是的,我有。尽管如此,我认为这里的问题是没有参数的数据,我们需要从表单中获取。您应该在浏览器的“网络”选项卡中检查凭据是如何发送的,以及主体、查询字符串、路径是如何发送的?是的,它们作为JSON中的参数。但是,我不知道如何抓住这个并使用它
// config
emailSignInPath: '/auth/sign_in'

// route declaration
app.post('/users/auth/sign_in', routes.verifyusers);

// route action
exports.verifyusers = function(req, res) {
  models.user.find({
    where: {
      email: req.body.email,
      password: req.body.password
    }
  }).then(function(user) {
    if(user) {
      console.log("alright !")
    };
  });
};