在Mongoose中添加和删除

时间:2016-05-20 12:56:29

标签: node.js mongodb express mongoose

{
    "_id" : 1,
    "_name" : "peter",
    "favourites" : [ 
        {
            "user_id" : 1
        }, 
        {
            "user_id" : 2
        }
    ]
}

我在Mongo中有这个模式,我使用Node / Express / Mongoose来管理我的堆栈。我是这个特殊筹码的新手,我有一个最喜欢的'网站上的按钮我正在建设中。什么是从收藏夹中添加/删除的最佳方式?

我是否真的需要设置两条路线,一条用于POST,另一条用于PUT?我不确定解决这个特定问题的最佳方法是什么,我已经进行了一些搜索,但我找不到 相关的任何内容。

3 个答案:

答案 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相关联的用户。

如果你添加更多细节。我可以给你一个具体的答案。