基本上标题所说的 - 我在为"id"输入的所有 id 上都得到了 404 未找到:
dpd.items.get("id", function(results, error) {
console.log(results);
});
以及任何值"id"的 400 错误请求:
dpd.items.put("id",{category:value},function(results, error){
console.log("Record updated");
});
所有 id 值都存在于已部署的仪表板中,我能够使用 ID 以外的任何类别参数发出 get 请求。
感觉我已经尝试了一切,请帮忙!
如果通过与部署的客户端不同的客户端插入文档,则可能会发生此错误。
从这里:
MongoDB使用ObjectIds作为_id字段的默认值,如果未指定_id字段...如果客户端不添加_id字段,mongod 将添加一个包含 ObjectId 的_id字段。
尽管 mongoDB 创建的 ID 在部署的仪表板中可见,但它们不是普通字符串(如部署生成的 ID),并且 deployd 在查找字符串时找不到它们。
尝试使用任何其他mongoDB客户端(例如Robomongo)运行如下所示的查询:
db.yourcollection.find({_id: ObjectId("some_id_you_know_exists_in_collection")})
如果未引发错误,则 id 很可能是不是由 deploy 创建的 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);
};
})
});
})
你必须自己决定这是否适合你。
部署创建任何集合的 crud API。
确保集合名称正确 尝试使用
http://localhost:PORT/items/id ..如果这也将给出 404,则打开
http://localhost:PORT/dashboard/items/events/
和在仪表板上转到仪表板/项目/事件/这将在 GET 面板上打开,写在那里控制台.log(this.query)
和大约 400 个请求,你写代码控制台.log(this.body) 上http://localhost:PORT/dashboard/items/events/#put-panel
这是调试 API 的方法,部署有一些问题,但更好的框架可以立即创建 API