繁体   English   中英

猫鼬,使用表单数据发布数据

[英]mongoose, post data using form-data

所以我想将数据从Web表单发布到数据库,这就是我的全部代码

script.js

$scope.save1 =function()
{
    var input2 = {
        "_id":$scope.iduser,
        "Name":$scope.username,
        "position":$scope.position,
        "level":$scope.level,
        "acclevel":$scope.data.acclevel,
        "status":$scope.status1,
        "pass":$scope.pass
    }
    $http.post("http://localhost:22345/user",input2)
    .success(function(res) {
        if(res.error == 0)
        {
            $scope.status1 = "active";
            $scope.iduser = "";
            $scope.username = "";
            $scope.position = "";
            $scope.level = "";
            $scope.data.acclevel = "";
            $scope.pass = "";
            $scope.IdUser = false;
            alert("save success");
        }
        else
        {
            console.log(res.User);
        }
    });
}   }]);

我的其余API(user.js)

app.post("/user",function(req,res){

    var users = new user(req.body);
    users.save(function(err,users){
        if(err)
        {
            data['error'] = 1;
            data['User'] = err;
            res.json(data);
        }
        else
        {
            data['error'] = 0;
            res.json(data);
        }
    })
});

楷模

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var user = new Schema({
_id : String,
Name : String,
position : String,
level : String,
status : String,
pass : String},{ collection: 'user'});
var user = mongoose.model("user",user);
module.exports.user = user;

当我尝试使用使用表单数据的邮递员发帖时,我总是会收到错误结果,但是如果我使用x-www-form-urlencoded,我会获得成功结果,那么mya代码的问题何在。 谢谢

更新

最后,我发现了问题,当我尝试创建标头(Access-Control-Allow-Origin,Access-Control-Allow-Methods等)时发生了这种情况,我对此进行了更改

app.use(function (req,res,next) {
res.header("Access-Control-Allow-Origin","*");     
res.header('Access-Control-Allow-Methods','POST,GET,PUT,DELETE,OPTIONS');
res.header("Access-Control-Allow-Headers","X-Requested-With,X-HTTP-Methods-Override,Content-Type,Accept,Cache-Control, Pragma, Origin,Authorization, Content-Type");
res.header("Access-Control-Allow-Credentials","true");
if ('OPTIONS' == req.method){
    return res.send(200);
}
next();
});

所以谢谢你的所有答案

Form-datax-www-form-urlencodedW3C定义的form content type不同类型。

x-www-form-urlencodedDefault ,用于发送simple text/ASCII数据。

当您有non-ASCII datalarge Binary data时,将使用Form-data large Binary data

根据w3.org文档:

内容类型“ application / x-www-form-urlencoded”对于发送大量二进制数据或包含非ASCII字符的文本效率不高。 内容类型“ multipart / form-data”应用于提交包含文件,非ASCII数据和二进制数据的表单。

就您而言,您拥有simple text/ASCII data 因此, x-www-form-urlencoded将代替form-data起作用。

请阅读w3.org 上有关表单内容类型的文档,以更好地理解这些表单内容类型。

您还可以参考邮递员文档来清除您的疑问。

我希望这可以消除您的疑问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM