实际案例是给已经运行的应用中的某个collection添加新的字段,在strapi中可能并没有在这种情况下对原先已有的数据做migrate操作,而是放任不管。所以,这就会产生一个潜在的风险。例如看下面代码:
entities = await strapi.services.model.find(ctx.query, ['categories', 'keywords', 'products']);
假设,products字段是model中后添加的,旧model中的数据并不存在products这个字段。此时,这个指令的执行就会出错,提示:
$in requires an array as a second argument, found: missing
解决方案:
- 在旧数据比较少的情况下,我们可以通过strapi的后台管理页面给model的旧数据设置products字段(设定一个指定值,然后再删除)。
- 如果旧数据比较多,就要想办法直接做数据库操作,给旧的model数据批量添加products字段了。