我想创建一个混合移动应用程序,后端是Node js,它将在mongodb中保存数据我的服务器正常工作我准备了处理用户请求的路由
我可以使用GET方法从我的服务器获取数据但我的问题是我无法使用POST方法保存从离子用户界面发出的数据。我尝试使用POSTMAN发送数据,数据在mongodb中成功保存,但是当我从移动用户界面发送数据时出现问题
这是一张图片,用于显示节点js服务器使用POSTMAN发送POST请求的结果 并从移动用户interce发送POST请求
以及如何将数据保存在mongoDB中
这是节点服务器中的路由文件
var Product = require('../models/product');
var express = require('express');
var router = express.Router();
router.route('/products')
.get(function(req, res) {
Product.find(function(err, products) {
if (err) {
return res.send(err);
}
res.json(products);
});
})
.post(function(req, res) {
console.log(req.body);
var product = new Product(req.body);
product.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ message: 'product Added' });
});
});
这是表格
<label class="item item-input">
<input name="1" type="text" ng-model="product.nom" placeholder="nom du produit">
</label>
<label class="item item-input" >
<input name="2" type="text" ng-model="product.unite" placeholder="unité de cette produit">
</label>
...
<div class="item button button-block button-positive" ng-click="createProduct(product)" >
ajouter le produit
</div>
这是产品的控制者:
app.controller('productController', function($http, $scope) {
$scope.createProduct = function (new_prod){
console.log(new_prod);
var req = {
method: 'POST',
url: "http://localhost:3000/api/products",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: new_prod
};
$http(req)
.then(function(response) {
console.log(response);
});
};
答案 0 :(得分:2)
如果您要发布JSON,则不应使用application/x-www-form-urlencoded
的内容类型。请改用application/json
。
https://tools.ietf.org/html/rfc4627
application / x-www-form-urlencoded不适用于json,它适用于您在网址中看到的数据:
key=value&foo=bar
答案 1 :(得分:0)
我认为你的问题与CORS有关。
您需要安装https://github.com/expressjs/cors并在快递应用中使用它们:
var Product = require('../models/product');
var express = require('express');
var cors = require('cors');
var app = express();
var router = express.Router();
app.use(cors());
router.route('/products')
.get(function(req, res) {
Product.find(function(err, products) {
if (err) {
return res.send(err);
}
res.json(products);
});
})
.post(function(req, res) {
console.log(req.body);
var product = new Product(req.body);
product.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ message: 'product Added' });
});
});