0

В основном, что говорит заголовок - я получил 404 Not Found для всех идентификаторов, которые я вводил для «id»:Ошибка Node.js Deployd 404 при ошибке dpd.get & 400 на dpd.put при использовании параметра id

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

и 400 Bad Request на любое значение «ID»: существует

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

Все значения идентификаторов в приборной панели Deployd, и я могу сделать получать запросы, используя любые параметры категории ДРУГИЕ чем ID.

Чувства, как будто я пробовал все на этом этапе, пожалуйста, помогите!

ответ

0

Эта ошибка может возникнуть, если вы вставляете документы через другой клиент, чем deployd.

От here:

MongoDB использует ObjectIds в качестве значения по умолчанию для поля _ID, если поле _id не указано ... если клиент не добавляет поле _id, mongod добавит поле _id который содержит ObjectId.

Хотя идентификаторы, созданные MongoDB видны в deployd приборной панели, они не являются нормальными строками (как идентификаторы, порождаемых deployd) и deployd не находит их, когда он ищет строку.

Попытка выполнить запрос, как следующий с любым другим клиентом MongoDB (например Robomongo):

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

Если он не выдаст ошибку, то идентификатор скорее всего, ObjectId, который не был создан deployd ,

К сожалению, нет простого исправления. (По крайней мере, не для больших коллекций и сложных приложений.) Для коллекций SMALL я бы предложил просто дублировать данные в новую коллекцию и позволить deployd создавать новые идентификаторы.

Быстрые, грязный и непроверенный:

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); 
      }; 
     }) 
    }); 
}) 

Вы должны решить для себя, если это работает для вас.

+0

Это была проблема, я импортировал данные из csv. способный решить проблему путем импорта без идентификаторов. – kartikshastri

0

Deployd создает crud API любой коллекции.
Убедитесь, что имя коллекции правильно попытаться использовать
http://localhost:PORT/items/id .. если это будет также дать 404 затем открыть
http://localhost:PORT/dashboard/items/events/
и на приборной панели Гото приборной панели/элементов/событий/это откроется панель GET, писать там консоль. журнал (this.query)

и около 400 запроса, вы пишете код console.log (this.body) на http://localhost:PORT/dashboard/items/events/#put-panel

это способ отладки API, deployd есть некоторые проблемы, но более эффективные рамки для создания API мгновенно

+0

Да, http: // localhost: 5000/items/"id" также дает 404. Консоль регистрирует это: Переместился на http: // localhost: 5000/dashboard/items/events dpd.js: 61 GET HTTP: // локальный: 5000/__ ресурсы/пункты/Validate.js 404 (не найдено) dpd.js: 61 GET http: // localhost: 5000/__ resources/items/delete.js 404 (не найдено) – kartikshastri

+0

Это регистрирует запрос {id: '301'}, который должен работать, потому что это запись с id 301, но я все равно получаю 404. – kartikshastri

+0

У вас есть данные в коллекции? –

 Смежные вопросы

  • Нет связанных вопросов^_^