REST / API新手在这里!
我想向用户保存一系列内容,但我没有得到所需的响应。
我的mongoose架构如下所示:
var mongoose = require("mongoose"),
mongooseSchema = mongoose.Schema,
userSchema = {
"name": String,
"email": String,
"cookies": {
"cookie": [{
"name": String,
"brand": String
}]
}
};
我的用户路线(混乱的部分)看起来像这样:
User.findById(req.params.id, function (err, user) {
user.name = req.body.name;
user.email = req.body.email;
user.cookies = {
"cookie": [{
"name": req.body.cookies.cookie.name,
"brand": req.body.cookies.cookie.brand
}]
};
我的回答最终是:
{
"_id": "56048e38701a663707b49c7a",
"__v": 0,
"email": "netopwibby@thenetwork.email",
"name": "NetOperator Wibby",
"cookies": {
"cookie": []
}
}
过去一周我一直试图让API运行起来,并且在进一步取得成功的同时,我还没有。如果有人能说清楚为什么我的代码不起作用,我会非常感激。
编辑:我更新了我的用户更新功能以应用@ ianaya89的代码,但仍然没有运气。完全发布了这个功能。
function updateUser(req, res) {
var updatedUser = {};
updatedUser.name = req.body.name;
updatedUser.email = req.body.email;
updatedUser.cookies = {
"cookie": [{
"name": req.body.cookies.cookie.name
"brand": req.body.cookies.cookie.brand
}]
};
User.findByIdAndUpdate(req.params.id, updatedUser, {new: true})
.exec(function(err, user) {
if (err) {
res.json({
"ERROR": err
});
} else {
res.json({
"UPDATED": user
});
}
//... your callback
});
}
答案 0 :(得分:1)
我认为您的代码工作正常但mongoose
正在返回旧用户属性而不是新用户属性。因此,您可以尝试使用findByIdAndUpdate
方法和类似的方法:
var updatedUser = {};
updatedUser.name = req.body.name;
updatedUser.email = req.body.email;
updatedUser.cookies = {
"cookie": [{
"name": req.body.cookies.cookie.name,
"brand": req.body.cookies.cookie.brand
}];
User.findByIdAndUpdate(req.params.id, updatedUser, {new: true})
.exec(function(err, user){
//... your callback
});
findByIdAndUpdate
的第三个参数是一组可能的选项,在这种情况下,我将其设置为返回更新的用户而不是旧用户:{new: true}
。
查看文档here。