Loopback [nodejs]自动升级/自动更新模型到mongodb

时间:2016-02-10 15:06:55

标签: node.js mongodb loopbackjs

环回的新手,我无法将生命中的单个json模型迁移到我的mongodb数据源。

我一直在忙着:https://docs.strongloop.com/display/public/LB/Creating+a+database+schema+from+models

以上是我迄今为止尝试过的事情:

我创建了一个迁移脚本bin/migrate.js,我计划在每次需要使用自动更新迁移更改时运行该脚本:

var path = require('path');
var app = require(path.resolve(__dirname, '../server/server'));
var ds = app.datasources.acme;
var appModels = ['Client'];
ds.isActual(appModels, function(err, actual) {
    if (!actual) {
        ds.autoupdate(appModels, function(err) {
            if (err){
                throw (err);
            }
        });
    }
});

console.log("Migrated: " + appModels.join());

我使用robomongo和mongo cli检查了两者,但我无法找到生成的表格:

> use acme
switched to db acme
> db.getCollectionNames();
[ ]

我也是mongodb的新手,所以在我如何检查迁移是否成功时可能会出现问题。

我在这里尝试过这个答案,但它对我不起作用:Migrating built-in models to Databases

其他一些相关的东西:

datasources.json

{
  "acme": {
    "host": "127.0.0.1",
    "port": 27017,
    "database": "acme",
    "username": "root",
    "password": "password",
    "name": "acme",
    "connector": "mongodb",
    "user": "root"
  }
}

我的模特

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

1 个答案:

答案 0 :(得分:1)

事实证明这确实有效。来自mysql的背景,我不知道只有里面有文件,你才能看到mongodb集合。

当我添加以下内容时,我得到了我正在寻找的视觉确认:

app.models.Client.create([
    {contact_number: '09xxxxxxx', password: 'password', email: 'acme@gmail.com'},
], function(err, clients) {
    if (err){
        throw err;
    }

    console.log('Models created: \n', clients);
});