Model.create不是函数-Stradi

时间:2019-11-25 21:12:32

标签: javascript database sql-insert bookshelf.js strapi

在Stradi的管理ui中创建模型时,我有几个唯一的字段。

我意识到,在api调用期间未提供field时,它将给出错误消息500,而不是正确的错误消息。

我确实理解为什么会出错,因为我可以在后端控制台中看到日志,并且已经浏览了https://github.com/strapi/strapi/issues/1189https://github.com/strapi/strapi/issues/1175等帖子

在阅读完这些问题之后,我相信最好的方法是去/api/controllers并创建一个create之类的函数来覆盖所提供的函数,但是我遇到了Model.create is not a function的错误

我在控制器中还没有做很多事情,因此代码很苗条。

module.exports = {
    /* Strapi has default create function
     * But because of the error message it provide is vague, will have to customize the controller */
    create: async (ctx) => {
        try {
            console.log(ctx.request.body, 'ctx');
            const article = await Article.create(ctx.request.body);
            console.log(article, 'article');
        } catch (e) {
            console.log(e, 'error');
        }
    }
};

我已经阅读了问题通知单https://github.com/strapi/strapi/issues/1505 但是我正在使用 绑架:3.0.0-beta.17.5 节点:v10.17.0 npm:6.11.3 db:sqlite3(本地)PostgreSQL(暂存)

有人知道我做错了什么吗?

在此先感谢您的帮助和建议。

1 个答案:

答案 0 :(得分:1)

我建议您在https://strapi.io/documentation/3.0.0-beta.x/concepts/controllers.html#extending-a-model-controller

处检查默认控制器功能

您将看到如何使用服务功能来创建条目。

我不建议您使用Model Global变量。

const { parseMultipartData, sanitizeEntity } = require('strapi-utils');

module.exports = {
  /**
   * Create a record.
   *
   * @return {Object}
   */

  async create(ctx) {
    let entity;
    if (ctx.is('multipart')) {
      const { data, files } = parseMultipartData(ctx);
      entity = await strapi.services.restaurant.create(data, { files });
    } else {
      entity = await strapi.services.restaurant.create(ctx.request.body);
    }
    return sanitizeEntity(entity, { model: strapi.models.restaurant });
  },
};