如何使用 Mongoose 在 AngularJS 中创建 PUT 函数
Posted
技术标签:
【中文标题】如何使用 Mongoose 在 AngularJS 中创建 PUT 函数【英文标题】:How to create PUT function in AngularJS with Mongoose 【发布时间】:2019-10-19 06:14:35 【问题描述】:对 Mongo 的 GET 请求有效,但 PUT 无效,我怀疑从控制器到路由器的路径不正确。我试过使用update()
和findByIdAndUpdate()
,但没有成功。我没有点击路由器,如果我这样做了,我没有看到 Mongo 中更新的数据。我正在使用 express、node 和 mongoose。
retail.controller.js
myApp.controller("RetailController", [
"RetailService",
"$routeParams",
"$http",
function(RetailService, $routeParams, $http)
var self = this;
//self.isBusy = true;
self.getMovies = function(id)
self.getDetails(id);
self.getApiMovies(id);
;
// Get data from MongoDB Movies Table
self.getDetails = function(id)
$http(
method: "GET",
url: "/movies/data_store/" + id
).then(function(response)
self.productData = response.data[0];
console.log(self.productData);
);
;
self.getApiMovies = function(id)
$http(
method: "GET",
url: "/movies/api/" + id
).then(function(response)
let data = response.data.product.item;
self.apiData = data;
);
;
self.updatePrice = function(id, data)
$http(
method: "PUT",
url: "/update/" + id,
data
).then(function(response)
console.log(response);
);
;
]);
retail.router.js
var express = require("express");
var router = express.Router();
var MyRetail = require("../models/myretail.schema");
var request = require("request");
// Data route to API
router.get("/api/:id", function(req, res)
var apiURL = "http://redsky.target.com/v2/pdp/tcin/13860428?price";
request(apiURL, function(error, response, body)
if (error)
console.log("error making Redsky API request");
res.sendStatus(500);
else
res.send(body);
);
); // End route to API
// Data route to dB with :id
router.get("/data_store/:id", function(req, res)
MyRetail.find( id: req.params.id , function(databaseQueryError, data)
if (databaseQueryError)
console.log("database query error", databaseQueryError);
res.sendStatus(500);
else
res.send(data);
);
); // End data route to dB with :id
router.put("/update/:id", function(req, res)
console.log(req.body.current_price.value);
console.log(req.body._id);
MyRetail.findByIdAndUpdate(
id: req.body._id ,
$set: "current_price.$.value": req.body.current_price.value
),
function(databaseQueryError, data)
console.log(data);
if (databaseQueryError)
console.log("database query error", databaseQueryError);
res.sendStatus(500);
else
res.send("data updated");
;
);
module.exports = router;
我正在寻求有关如何完成 PUT 的帮助或正确方向的推动
【问题讨论】:
谢谢 Naing Lin Aung 【参考方案1】:Angularjs 服务:
self.updatePrice = function(id, data)
var URL = "/update/" + id;
$http.put( URL, data).then(function (response,error)
if (error)
console.log('error : '+JSON.stringify(error));
else
console.log('response : '+JSON.stringify(response));
)
;
服务器端:
router.put('/update/:id', function(req, res)
console.log(req.body.current_price.value);
console.log(req.body._id);
MyRetail.update(
id: req.body._id ,
$set: "current_price.0.value": req.body.current_price.value
,function(databaseQueryError, data)
console.log(data);
if (databaseQueryError)
console.log("database query error", databaseQueryError);
res.sendStatus(500);
res.json(message : "data not updated");
else
res.json(message : "data updated");
);
);
试试这个!请输入变量/字段名称
对于$ operator read documentation,您需要在查找查询中包含 current_price。
【讨论】:
以上是关于如何使用 Mongoose 在 AngularJS 中创建 PUT 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Mongoose 模型与 angularjs 复选框绑定
AngularJS SPA 使用 API 和 Mongoose
聚合函数在页面刷新时复制 ng-repeat 中的项目。需要弄清楚如何停止重复。 Angularjs Mongodb mongoose