mongoose,使用表单数据发布数据

时间:2016-08-28 01:01:00

标签: javascript node.js mongodb mongoose

所以我不想将数据从网络表格发布到数据库 这就是我的所有代码

的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();
});

非常感谢所有答案

1 个答案:

答案 0 :(得分:0)

Form-datax-www-form-urlencoded是由form content type定义的W3C的不同类型。

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

如果您有Form-datanon-ASCII 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的Documentation on Form Content Types,以便更好地了解这些表单内容类型。

你也可以参考Postman Docs来消除疑虑。

我希望这可以解除你的怀疑。