当我尝试使用find内部环回模型js file.iam获取错误为错误:无法调用user.find()。尚未设置find方法

时间:2015-12-03 10:10:02

标签: javascript node.js strongloop

错误:无法调用user.find()。尚未设置find方法。 PersistedModel尚未正确附加到DataSource! user.js位于server / models / user.js

module.exports = function(User) {
    User.find({where: {id:'3'}}, function(err,data) { 
        console.log(err);
        console.log(data);
      });
};

2 个答案:

答案 0 :(得分:2)

您当前的model-config.json文件包含以下行:

"user": { "dataSource": "db" }

在用户中创建U大写,因为这是创建一个小写字母的新模型用户,我认为你还没有创建像user.js和user.json这样的模型文件。看起来您想要扩展内置的User模型,在这种情况下,您可以使用此小写用户模型,但将模型定义保留在model-config.js中,并在User.json文件中使用User作为基础。检查Docs是否有明确的解释

答案 1 :(得分:0)

这与具有小写“u”的“用户”无关。在StrongLoop文档之后,看起来您已生成模型但未将其链接到数据源。

在文档中,它建议您创建模型,然后更改数据源。生成模型时,可供您设置的存储将只是“db”,这是一个内存中的提供者。

要让您的API路径正常工作,请先使用以下方法生成模型

slc loopback:model

生成模型后,运行:

slc loopback:datasource

然后会提示您填写有关数据源的一些选项。以下是使用MongoDB的示例(注意,在':'之后没有数据,按Enter键以使用默认值):

? Enter the data-source name: name_i_want_to_use_for_this
? Select the connector for name_i_want_to_use_for_this: MongoDB (supported by StrongLoop)
Connector-specific configuration:
? Connection String url to override other settings (eg: mongodb://username:password@hostname:port/database): 
? host: localhost
? port: 
? user: 
? password: 
? database: mydbname
? Install loopback-connector-mongodb@^1.4 Yes

然后,这将为您提供名为name_i_want_to_use_for_this的连接提供程序。现在进入/server/model-config.json,然后向下滚动到您的模型名称,您将看到:

  "name_of_my_model": {
    "dataSource": "db",
    "public": true
  }

将其更改为:

  "name_of_my_model": {
    "dataSource": "name_i_want_to_use_for_this",
    "public": true
  }

现在您已完成,请返回您的strongloop项目目录并运行node .,然后浏览到http://localhost:3000/explorer。转到您要测试的方法,然后再次在资源管理器中对其进行测试,现在应该将数据插入到模型中。

要测试此功能,请使用资源管理器创建新记录,然后使用资源管理器查询其ID。