问题标签 [loopbackjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在 Strongloop 环回脚手架项目中覆盖基本用户?
给定一个使用以下内容创建的全新项目:
$ slc lb project myapp
如何用放置在目录中的“客户”模型替换“用户”模型?客户应具有登录/注销等方法,并且“用户”不应作为 API 存在。此外,客户模型不应该是动态的。让我们假设客户应该有一个如下模式:models.json
./models
- 姓名
- 电子邮件
- 密码
- 问题
- 回答
- 电话
- 已验证
- 数据创建
我已经玩了几天了,我的 google-fu 让我失望了。任何帮助表示赞赏。谢谢。
strongloop - 可以挂钩 beforeUpdate/afterUpdate 修改值吗?
我有模型调用“点”,我想在每次操作更新时更新“更新”字段。所以,我做了钩子 boforeUpdate 来修改用 new Date() 更新。结果回调为真,更新的字段是新的日期时间。但未在 db 上更新,该字段仍然是旧的日期时间。我的代码:
javascript - strongloop 环回发送电子邮件
我看到环回带有集成为节点模块的nodemailer。我尝试按照文档通过 angular-sdk 发送 hello world 邮件
http://apidocs.strongloop.com/loopback/#emailsendoptions-callback
但是,这里的文档并不具体。我尝试了以下方法:
这给了我这个错误,即使我有一个经过身份验证的用户实例。
我的问题是如何配置电子邮件模块以设置 SMTP 等。任何帮助将不胜感激。
谢谢斯文
node.js - 如何使用 Loopback.io 设置 SMTP
如何使用 loopback.io mbaas 设置 SMTP 服务器?我已经浏览了所有文档,但我找不到它。如果有办法,如何在环回配置文件中提供/定义我的 smtp 服务器设置。
javascript - 如何正确使用 MongoDB 进行 Strongloop 脚手架用户模型存储?
我是 Strongloop 的新手,也是 MongoDB 的新手。现在有这么多的学习曲线。
我的基本问题是我将用户模型(models.json)数据源从内存连接器切换到 loopback-connector-mongodb 连接器,并且在调用 /login 时不再获得 userId。我取回了一个访问令牌,但用户 ID 为空。如果我切换回内存连接器,我会得到一个 1 或其他的 userId。
好像我记得如果我不提供 ID,Strongloop 会在某个地方为我添加一个。这仅适用于内存数据存储吗?既然是 mongo,我需要做一些特别的事情吗?
我是否也需要将 accessToken 模型切换为 mongo (我只是想到了这个)?
谢谢。
javascript - 在 model-builder.js 中应用“getter”方法应该有问题
我正在尝试设置一些基本场景并使用 LoopBack 来找出它的实际灵活性和可用性水平。
其中之一是在处理来自数据库(例如 MySQL)的源数据期间,必须修改结果 JSON 对象中某些属性的值。
我正在使用以下版本:
strong-cli v2.5.5 (node v0.10.29) node-inspector v0.7.4 strong-build v0.1.0 strong-cluster-control v0.4.0 strong-registry v1.1.0 strong-supervisor v0.2.3 (strong-agent v0. 4.9, strong-cluster-control v0.4.0) loopback-datasource-juggler v1.6.2 loopback-connector-mysql v1.4.1
我尝试了所有方法,但看起来“getter”方法是以我不理解的方式应用的,或者存在错误。
为了描述这个问题,我使用了一个简单的表“city”(在 MySQL db 中):
并填写了一些简单的数据。
为了在 LoopBack 中定义模型,我使用了位于“models”目录中的文件“city.js”:
如您所见,“getter”方法是使用“City”对象在“city”模型上定义的。
当我尝试运行 LoopBack 然后通过 StrongLoop API Explorer 发送请求时:
控制台看起来像(包含 DEBUG=loopback:connector:* 的信息):
结果如下:
如您所见,“启用”属性最终由“getter”方法更改,但是:
- 在 LoopBack 初始化期间,“getter”方法也被调用了 2 次
- 在查询 MySQL 数据库之前,“getter”方法也被调用了 1x
- 'getter' 方法中的 console.log(v) 总是返回 'undefined'
loopback-datasource-juggler 中“model-builder.js”的源代码(第 364 行)
是一个解释为什么。'call' 方法只有一个参数(this)代表被调用函数中的 'this' 对象,并且没有第二个参数代表被调用函数中的参数 'v'(与 Raymond Feng 关于How我要创建 getter 和 setter 覆盖吗?)。
问题还在于“getter”方法中的“this”始终表示一个包含模型所有属性的对象:
然后来自控制台的消息:
你能解释一下“getter”方法的当前实现的想法吗?
非常感谢。
米洛斯·拉皮斯 MLC
更新
非常感谢雷蒙德的回答。
一开始我以为是这样,但是当我使用类似的东西时:
当我请求时,节点立即崩溃:
出现错误: RangeError:超出最大调用堆栈大小
这就是为什么我认为您的实现有点不同。有什么不对?
我究竟应该使用什么来将“x”添加到从 db 检索到的实际值中?
谢谢。
米洛斯·拉皮斯 MLC
strongloop - mongodb belongsTo 外键为空
所以这个问题感觉很像我的上一个问题。Strongloop 让我觉得自己像个菜鸟。哈哈。
我从一些 LB 示例中偷了这个:
在资源管理器中,我看到了客户和订单端点。客户也有端点/customers/{id}/orders
,订单有/orders/{id}/customer
等等。到目前为止一切都很好。
我有这个客户添加:
当我发布订单时,我得到一个空的 customerId:
有什么想法我在这里做错了吗?
node.js - 遍历数组,异步更新/创建对象,当一切都完成后调用回调
我有一个问题,但我不知道如何解决这个问题。
我正在使用环回,但我想我迟早会在 mongodb 中遇到同样的问题。让我解释一下我在做什么:
- 我从另一个 REST 服务获取条目,然后为我的 API 响应准备条目(条目尚未准备好,因为它们没有来自我的数据库的 id)
- 在我发送响应之前,我想检查数据库中是否存在条目,如果不存在:
- 如果有,则创建它(由 source_id 确定):
- 使用它并将其更新到新版本
- 发送带有条目的响应(条目现在具有分配给它们的数据库 ID)
这似乎没问题,并且易于实施,但据我所知还不是。我将尝试在代码中进一步解释:
注意:我遗漏了一些代码,但如果你通读它,我认为它是不言自明的。
所以我想遍历所有对象,在数据库中创建或更新它们,然后当所有对象都被更新/创建时,使用它们。我该怎么做?
javascript - 基于 User 的客户模型基于 userId 而不是 customerId 返回 FK 属性
与此相关:上一期
我定义了这个模型:
如果我什么都不做,我会得到所有我期望的额外用户端点(登录、注销、accessTokens 等)。但是我的登录结果给了我:
似乎 userId 应该是 customerId。我已经从 models.json 中删除了用户和 accessToken 模型。所以我什至不知道它从哪里获得关系信息,除非它是在某个地方烘焙的。无论如何,如果我尝试/customer/53c6f5d4769ed...
在标题中调用并提供令牌,我会得到 401。从技术上讲,Id 是正确的,只是 FK 名称错误。
我试过像
我认为这改变了我的 FK 名称,但在调用后续端点时我仍然得到 401。
这是我自己到达的地方。所以我的问题实际上是这样的:
对我的 authN 使用代码优先而不使用“用户”模型如何连接 accessToken(也是代码优先)?扭曲将是我计划拥有多个身份验证模型(即客户、供应商、员工)。所以真正的问题是我如何连接它以允许每种类型的“用户”获得他们自己的访问令牌???
清如泥??;-)
javascript - 使用 LoopBack 作为 API 代理和响应重组
我必须从非 RESTful API 访问数据,并尝试构建一个新的 Web 服务来访问原始 API 并将其重新公开为 RESTful API。
我想使用LoopBack来实现这一点。
到目前为止,我有:
理想情况下,我想将其公开POST
为通话中GET
的/api/debtors/{clientId}
位置。clientId
PARAMETERNAME
model.create