DynamoDB: ValidationException: одно или несколько значений параметров были недействительными: отсутствует ключ электронной почты в элементе - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в Динамодб. Я создал одну таблицу DynamoDB. Используя DynamodB- npm и для проверки я использую joi. Я запутался и столкнулся с парой вопросов. Во-первых, когда я проверил свою AWS 'панель инструментов Dynamodb, я не вижу содержимого и тегов, даже если она находится в моей схеме My AWS' dynamodb dashboard. Затем я пытаюсь опубликовать данные в своей базе данных Blogpost с помощью Postman (This is how do I post it). Но я получаю ошибку, как это: ValidationException: One or more parameter values were invalid: Missing the key email in the item.

Это мои настройки DynamoDB

var dynamo = require("dynamodb");
const Joi = require("joi");
dynamo.AWS.config.update({
  accessKeyId: "AKIAIBJS4SX3SWW**",
  secretAccessKey: "8O1dsZrIM43q8OF4kO/lMToW**",
  region: "us-east-1"
});

var BlogPost = dynamo.define("BlogPost", {
  hashKey: "email",
  rangeKey: "title",
  schema: {
    email: Joi.string().email(),
    title: Joi.string(),
    content: Joi.binary(),
    tags: dynamo.types.stringSet()
  }
});

dynamo.createTables(function(err) {
  if (err) {
    console.log("Error creating tables: ", err);
  } else {
    console.log("Tables has been created");
  }
});

module.exports = BlogPost;

Это мой express сервер

const express = require("express");
const app = express();
const BlogPost = require("./db");

app.post("/post", async (req, res, next) => {
  try {
    const logs = new BlogPost(req.body);
    const entry = await logs.save();
    res.json(entry);
  } catch (error) {
    if (error.name === "ValidationError") {
      res.status(422);
    }
    next(error);
  }
});

const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`? App is listening at port ${port}!`));

1 Ответ

0 голосов
/ 08 апреля 2020

Ваш req.body не включает email свойство или свойство является пустой строкой.

Примените body-parser для вашего express сервера, что-то вроде:

...
var bodyParser = require('body-parser');
const app = express();

// parse application/json
app.use(bodyParser.json())
...
...