Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Model.create不是一个函数-strapi_Javascript_Database_Sql Insert_Bookshelf.js_Strapi - Fatal编程技术网

Javascript Model.create不是一个函数-strapi

Javascript Model.create不是一个函数-strapi,javascript,database,sql-insert,bookshelf.js,strapi,Javascript,Database,Sql Insert,Bookshelf.js,Strapi,在strapi的管理ui中创建模型时,我有几个独特的字段 我意识到,当api调用期间未提供字段时,它将给出500的错误消息,而不是正确的错误消息 我确实理解为什么会出现错误,因为我可以在后端控制台中看到日志,并且我已经扫描了诸如和之类的帖子 在阅读了这些问题之后,我认为最好的方法是去/api/controllers,创建一个函数,如create,以覆盖提供的函数,但我得到了Model的错误。create不是一个函数 我还没有做太多的控制器,所以代码很薄 module.exports = {

在strapi的管理ui中创建模型时,我有几个独特的字段

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

我确实理解为什么会出现错误,因为我可以在后端控制台中看到日志,并且我已经扫描了诸如和之类的帖子

在阅读了这些问题之后,我认为最好的方法是去
/api/controllers
,创建一个函数,如
create
,以覆盖提供的函数,但我得到了
Model的错误。create不是一个函数

我还没有做太多的控制器,所以代码很薄

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
但我用的是 strapi:3.0.0-beta.17.5 节点:v10.17.0 净现值:6.11.3 db:sqlite3(本地)postgresql(暂存)

有人知道我可能做错了什么吗


提前感谢您的帮助和建议。

我建议您在此处检查默认控制器功能

您将看到如何使用服务函数创建条目

我不建议您使用模型全局变量

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

我也读过,但我猜我有打字错误或其他原因,因为它第一次不起作用。所以我最终做了
constnewarticle=newArticle(ctx.request.body);newArticle.save()
你提供的东西很有魅力~但是我做
newArticle.save()
的缺点是什么?另外,通过
create:async(ctx)
实际上是重写,而
async create(ctx)
是扩展?它们看起来太相似了,所以我没有意识到当我扫描文档时,它不会使用管理关系和其他东西的查询系统。关于定义
create
函数,这两个函数都是正确的,并且将执行相同的操作。您能否将问题设置为已回答,了解此主题id将有助于确定;)非常感谢。