[英]Express nodejs not inserting data using mongoose with form-data
[英]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-data
和x-www-form-urlencoded
是W3C
定义的form content type
不同类型。
x-www-form-urlencoded
为Default
,用于发送simple text/ASCII
数据。
当您有non-ASCII data
或large 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.