{
"_id" : 1,
"_name" : "peter",
"favourites" : [
{
"user_id" : 1
},
{
"user_id" : 2
}
]
}
我在Mongo中有这个模式,我使用Node / Express / Mongoose来管理我的堆栈。我是这个特殊筹码的新手,我有一个最喜欢的'网站上的按钮我正在建设中。什么是从收藏夹中添加/删除的最佳方式?
我是否真的需要设置两条路线,一条用于POST,另一条用于PUT?我不确定解决这个特定问题的最佳方法是什么,我已经进行了一些搜索,但我找不到 相关的任何内容。
答案 0 :(得分:2)
我不会给你完整的答案,因为它总是很好学,所以我给你90%的我认为你正在寻找的东西。检查名称,如果它不在收藏夹数组中,请执行以下操作:
db.collection.update(
{ "username": "walterwhite" },
{ $push:
{
favourites: [ { "user_id": "7" } ]
}
}
)
答案 1 :(得分:1)
首先,您将需要任何行动的路线。这可能是使用HTTP Verbs(GET / POST / PUT / DELETE等)的最佳做法。然后你的路线看起来像这样:(这可以包装在一个包含所有路线的文件中,然后包含在主app文件中的required
(例如app.js)。)
module.exports = function (router) {
router.route('/favourites')
.get(function (req, res, next) {
// Code for getting all items
})
.post(function (req, res, next) {
// Code for inserting new item
})
.delete(function (req, res, next) {
// Code for deleting an item
});
}
然后,您需要构建一个包含与项目属性相对应的字段的表单,并使用POST
作为提交方法。您需要它来插入(添加)新项目。从表单发送的请求会将您发送到post
路由,您将在该路由中处理将项目附加到列表的逻辑。
要实现删除,您必须发送DELETE
,请求传递您要删除的项目的标识符。您将在delete
路线中处理此代码
当然,get
路线用于获取集合中的所有项目以供进一步处理或可视化。
答案 2 :(得分:0)
您必须创建与每个 user_id 关联的对象ID 。你可以创建这样的id。你可以将多个模型与mongoose population联系起来
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
"favourites" : [
{
"_id" : ObjectId("57338c9cc5c8cf74181b4cff"),
"user_id" : 1
},
{
"_id" : ObjectId("5734588e5a54d45434693a09")
"user_id" : 2
}
]
根据您的设置呈现页面或发送json对象作为响应,其中包含对象ID。
<a href="#" id="5734588e5a54d45434693a09">user_id-2</a>
<a href="#" id="57338c9cc5c8cf74181b4cff">user_id-1</a>
现在,您可以在点击特定<a>
代码时使用对象ID制作ajax请求。您可以使用jquery
实现此目标。然后从收藏夹中删除与该ID相关联的用户。
如果你添加更多细节。我可以给你一个具体的答案。