Я не могу опубликовать, используя запрос-обещание - PullRequest
0 голосов
/ 31 октября 2018

Моя проблема в том, что я получаю сообщение об ошибке, сообщающее, что я не могу отправить запрос. Я использую функцию insertDocuments для вставки сообщений в базу данных. Я пытаюсь создать обещанную версию модуля 'mongolab-data-api' node.js. Прошу прощения, если мой вопрос сбивает с толку

//This is a function in a class that handles all mlab related things
var rp = require('request-promise')
var insertDocuments = options => {
    if (!options.database || !options.collectionName || !options.documents) throw new Error('Database name, Collection Name, and Document(s) are required')
    var opt = {
        uri: `https://api.mongolab.com/api/1/databases/${options.database}/collections`,
        qs: {
            apiKey: this.apiKey

        },
        method: 'POST',
        body: {
            documents: options.documents
        },
        headers: {
            'User-Agent': 'Request-Promise'
        },
        json: true // Automatically parses the JSON string in the response
    };
    return rp(opt)
}

var options = {
    database: 'lexybase',
    collectionName: 'evy-history',
    documents: msg
}
insertDocuments(options)

Я получаю эту ошибку: Необработанный отказ StatusCodeError: 405 - {"message": "POST не разрешен."}

at new StatusCodeError (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request-promise-core/1.1.1/node_modules/request-promise-core/lib/errors.js:32:15)

at Request.plumbing.callback (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request-promise-core/1.1.1/node_modules/request-promise-core/lib/plumbing.js:104:33)

at Request.RP$callback [as _callback] (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request-promise-core/1.1.1/node_modules/request-promise-core/lib/plumbing.js:46:31)

at Request.self.callback (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request/2.88.0/node_modules/request/request.js:185:22)

at emitTwo (events.js:126:13)

at Request.emit (events.js:214:7)

at Request.<anonymous> (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request/2.88.0/node_modules/request/request.js:1161:10)

at emitOne (events.js:116:13)

at Request.emit (events.js:211:7)

at IncomingMessage.<anonymous> (/rbd/pnpm-volume/b50cbf1c-9de1-48a8-8200-48301efdd80c/node_modules/.registry.npmjs.org/request/2.88.0/node_modules/request/request.js:1083:12)

at Object.onceWrapper (events.js:313:30)

at emitNone (events.js:111:20)

at IncomingMessage.emit (events.js:208:7)

at endReadableNT (_stream_readable.js:1064:12)

at _combinedTickCallback (internal/process/next_tick.js:139:11)

at process._tickCallback (internal/process/next_tick.js:181:9)

Редактировать: Как выяснилось, проблема заключалась в том, что collectionName нужно указать 3 раза, и это должно быть

body:  options.documents

вместо

body: {
    documents:options.documents
}

1 Ответ

0 голосов
/ 31 октября 2018

Вам не хватает названия коллекции в uri :

URI: https://api.mongolab.com/api/1/databases/${options.database}/collections

должно быть:

URI: https://api.mongolab.com/api/1/databases/${options.database}/collections/{collectionName}

просто измените collectionName

405 возвращается из mongolab API

...