0

基本上就是标题所说的 - 我在为“id”输入的所有 id 上都收到了 404 Not Found:

dpd.items.get("id", function(results, error) {
 console.log(results);
});

以及对任何“id”值的 400 Bad Request:

dpd.items.put("id",{category:value},function(results, error){
 console.log("Record updated");
});

所有 id 值都存在于 Deployd 仪表板中,我可以使用除 ID 以外的任何类别参数发出获取请求。

感觉我现在已经尝试了所有方法,请帮助!

4

2 回答 2

0

部署创建任何集合的 crud API。
确保集合名称正确尝试使用
http://localhost:PORT/items/id .. 如果这也会给出 404,然后打开
http://localhost:PORT/dashboard/items/events/
并在仪表板上转到仪表板/项目/事件/这将在 GET 面板上打开,写在那里 console.log(this.query)

大约 400 个请求,您在http://localhost:PORT/dashboard/items/events/#put-panel上编写代码 console.log(this.body)

这是调试 API 的方法,部署时有一些问题,但更好的框架可以立即创建 API

于 2015-01-26T20:09:08.977 回答
0

如果您通过与部署不同的客户端插入文档,则可能会发生此错误。

这里

如果未指定 _id 字段,MongoDB 使用 ObjectIds 作为 _id 字段的默认值……如果客户端不添加 _id 字段,mongod 将添加一个包含 ObjectId 的 _id 字段。

尽管 mongoDB 创建的 ID 在已部署的仪表板中可见,但它们不是普通字符串(如 deployd 生成的 ID),并且 deployd 在查找字符串时找不到它们。

尝试使用任何其他 mongoDB 客户端(例如Robomongo)运行如下查询:

db.yourcollection.find({_id: ObjectId("some_id_you_know_exists_in_collection")})

如果它没有抛出错误,则 id 很可能是不是由 deployd 创建的 ObjectId。

不幸的是,没有简单的解决方法。(至少不适用于大型集合和复杂的应用程序。)对于小型集合,我建议将数据复制到新集合中并让部署创建新 ID。

快速、肮脏且未经测试:

dpd.collection.get({}, function(res) {
    _.each(res, function(object){
        object.oldId = object.id //add id backup 
        delete object.id

        // post new object without id -> deployd creates a new id
        dpd.newcollection.post(object, function(res, err) {
            if(err) {
                console.log(err);
            };
            if(res) {
                console.log(res);
            };
        })
    });
})

你必须自己决定这是否适合你。

于 2015-03-02T12:27:01.860 回答