我正在尝试关注Getting started with LoopBack但是我没有连接到MySql实例,而是尝试连接到localhost上运行的MongoDB实例(默认端口27017)。
按照Connect your API to a data source中给出的node .
执行的步骤执行此操作时,这会导致我出现以下错误,然后节点正在停止。
d:\ TestLoopBack \ node_modules \环回连接器-mongodb的\ node_modules \ mongodb的\ lib中\ utils.js:98
process.nextTick(function() { throw err; }); ^ ValidationError: The `CoffeeShop` instance is not valid.
详细信息:
Name
不能为空(值: undefined)。,ValidationError:CoffeeShop
实例无效。 详细信息:Name
不能为空(值:未定义)。,ValidationError:CoffeeShop
实例无效。详细信息:Name
不能为空 (值:未定义)。
有人可以帮我理解这个错误是什么,我该如何解决?
我的datasources.json文件有:
{ "db": { "name": "db", "connector": "memory" }, "mongoDs": { "name": "mongoDs", "connector": "mongodb", "host": "localhost", "port": 27017, "database": "TestLoopBackDB" } }
我没有在MongoDB上设置任何身份验证,因此没有指定用户名/密码。
答案 0 :(得分:0)
如果您正在使用现成的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
}
现在运行你的环回应用程序。
答案 1 :(得分:0)
这是一个愚蠢的错误。 :(
在定义模型时,我输入了Name
作为属性。我只是从Connect your API to a data source复制粘贴的automigrate
代码,其中包含属性name
的小写字母。在两个地方制作相同的案例后,它没有任何问题:)