Loopback + MongoDB,AutoMigrate 给出错误

Loopback + MongoDB, AutoMigrate giving error

我正在尝试关注 Getting started with LoopBack,但不是连接到 MySql 实例,而是尝试连接到本地主机上的 MongoDB 实例 运行(默认端口27017).

在按照 Connect your API to a data source 中给出的步骤执行 node . 时,这给了我以下错误,然后节点正在停止。

D:\TestLoopBack\node_modules\loopback-connector-mongodb\node_modules\mongodb\lib\utils.js:98

process.nextTick(function() { throw err; });
                              ^ ValidationError: The `CoffeeShop` instance is not valid.

Details: Name can't be blank (value: undefined).,ValidationError: The CoffeeShop instance is not valid. Details: Name can't be blank (value: undefined).,ValidationError: The CoffeeShop instance is not valid. Details: Name can't be blank (value: undefined).

谁能帮我理解这是什么错误,我该如何解决?

我的 datasources.json 文件有:

{ "db": { "name": "db", "connector": "memory" }, "mongoDs": { "name": "mongoDs", "connector": "mongodb", "host": "localhost", "port": 27017, "database": "TestLoopBackDB" } }

我没有在 MongoDB 上设置任何身份验证,所以没有指定用户名/密码。

在使用 MongoDB 中的任何集合之前,如果您正在使用 mongoDB 的现成集合,那么首先发现模型,然后在您的环回应用程序中使用。 要发现任何模型,请在 server/bin/discover.js

中使用以下脚本
var path = require('path');
var fs = require('fs');
var app = require(path.resolve(__dirname, '../server'));
var outputPath = path.resolve(__dirname, '../../common/models');

var dataSource = app.dataSources.mongoDs;

function schemaCB(err, schema) {
  if(schema) {
    console.log("Auto discovery success: " + schema.name);
    var outputName = outputPath + '/' +schema.name + '.json';
    fs.writeFile(outputName, JSON.stringify(schema, null, 2), function(err) {
      if(err) {
        console.log(err);
      } else {
        console.log("JSON saved to " + outputName);
      }
    });
  }
  if(err) {
    console.error(err);
    return;
  }
  return;
};

dataSource.discoverSchema('CoffeeShop',{schema:'TestLoopBackDB'},schemaCB);

运行 上面的脚本来发现和构建模型 [node server/bin/disovery.js] 在那之后 server/model-config.json 在最后一个对象之后添加这个。

"CoffeeShop": {
    "dataSource": "mongoDS",
    "public": true
  }

现在 运行 您的环回应用程序。

这是一个愚蠢的错误。 :(

在定义模型时,我输入了 Name 作为 属性。我只是从 Connect your API to a data source 中复制粘贴了 automigrate 代码,其中 属性 name 是小写的。在两个地方制作相同的案例后,它没有任何问题:)