为什么自动迁移不会在集合中创建任何属性?如何创建它们?

时间:2015-10-31 09:46:41

标签: loopbackjs strongloop

我使用slc loopback:model工具创建了模型。现在我希望Loopback创建相应的MongoDB集合,即执行自动迁移。

其中一个模型是Client模型,其基类是User模型。这意味着client/models/client.json只是空的,因为它的所有属性(字段)都是从User继承的:

{
  "name": "Client",
  "plural": "Clients",
  "base": "User",
  "idInjection": true,
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

所以我想我自己,如果我进行自动迁移,Loopback会找到所有User属性并使用它们创建Client集合。但事实并非如此!我的Client集合只有_id属性。

以下是我的自动迁移代码:

module.exports = function(app) {
    app.dataSources.mongodb.automigrate('Client', function(err) {
        if (err) throw err;
    });
};

我的问题:

为什么Loopback不为我的User模型使用Client模型属性?如何自动迁移以便Loopback将创建正确的集合?

1 个答案:

答案 0 :(得分:1)

automigrate用于将模型数据迁移到表格中,即模型名称tablename,模型的属性table columns

现在,当您使用MongoDB时,它会删除并创建documentation中所写的索引。这是因为MongoDB是无模式的。

因此,您可以避免自动迁移并直接插入新文档。