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
是小写的。在两个地方制作相同的案例后,它没有任何问题:)
我正在尝试关注 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: TheCoffeeShop
instance is not valid. Details:Name
can't be blank (value: undefined).,ValidationError: TheCoffeeShop
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
是小写的。在两个地方制作相同的案例后,它没有任何问题:)