标签: loopbackjs

如何访问将在“删除之前”操作挂钩中删除的模式实例?

before saveafter save操作的钩有一个datainstance含那将被改变的部分数据或模型实例属性。看这里。如何访问before delete挂钩中的模型实例?

即将发生的情况:删除特定模型后,我想删除相关项目。

loopbackjs

4
推荐指数
1
解决办法
1994
查看次数

停止分离的strongloop应用程序

我在我的服务器(ubuntu)上安装了loopback,然后创建了一个应用程序并使用命令slc run来运行......一切都按预期工作.现在我有一个问题,也是我面临的一个问题:

问题:我需要使用slc run命令,但在关闭终端后也要保持应用程序"活着".为此,我使用了--detach选项并且它可以工作,我想知道--detach选项是最佳实践还是我需要以不同的方式进行.

问题:在我使用--detach之后,我真的不知道如何阻止它.是否有一个命令可以用来阻止进程运行?

strongloop loopbackjs

4
推荐指数
1
解决办法
1759
查看次数

继承模型的远程方法未在回送资源管理器中显示

我已经在环回中继承了这样的模型-

{
    "name": "MyModel",
    "base": "AnotherModel",
    "idInjection": false,
    "properties": {
      "value": {
        "type": "String"
      },
      "display": {
        "type": "String"
      }
    },
    "validations": [],
    "relations": {},
    "acls": [],
    "methods": []
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以AnotherModelMyModel.js文件中调用所有的远程方法。但是,AnotherModel我的浏览器中没有显示的远程方法。如何使继承的模型的所有远程方法显示在资源管理器中?

strongloop loopbackjs

4
推荐指数
1
解决办法
1414
查看次数

删除环回模型属性仍然存在

我有一个名为'ctx.instance'的对象,它具有以下属性:

firstName: 'Ron',
lastName: 'Santo',
minor: true,
accepted: false,
emailChanged: false,
organizationId: 000000000000000001000001,
isDeleted: false,
userId: 55e17a46e410f9603cea515b
Run Code Online (Sandbox Code Playgroud)

这个对象被传递到我的函数中.在将其保存到数据库之前,我需要剥离'emailChanged'属性.所以我这样做了:

delete ctx.instance.emailChanged;
Run Code Online (Sandbox Code Playgroud)

delete返回'true',表示该属性不存在.

删除后的以下语句产生false,这也意味着它应该消失:

'emailChanged' in ctx.instance
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行console.log(ctx.instance),'emailChanged'属性仍然存在,并将其保存到数据库中.

如果我检查属性的属性,它说它是可配置的.如果我在delete语句之后执行console.log(ctx.instance.emailChanged),则会显示"undefined".

它为什么还在那里?

我在互联网上搜索过,尝试了很多不同的东西,我找不到为什么会这样.这发生在Node环境中.

更新: 数据库是Mongo.我正在使用Loopback.js模型和框架.

数据变量是通过PUT从客户端提交给服务器的对象.数据对象最初是JSON,但Loopback使其成为JavaScript对象.

代码在操作挂钩中,因此对DB的保存不在此函数中.

在我将函数传递回框架之前,'delete'语句是函数中的最后一个语句.

这是钩子的最小代码:

  module.exports = function( Member )
  {
    Member.observe( 'before save', upsertMember );

    function upsertMember( ctx, next )
    {
      // displays 'true' 
      console.log( ctx.instance.hasOwnProperty( 'emailChanged' ) );

      // displays 'false'
      console.log( ctx.instance.emailChanged );
      var isDeleted = delete ctx.instance.emailChanged;

      // displays 'true'
      console.log( isDeleted );

      // displays 'false' …
Run Code Online (Sandbox Code Playgroud)

javascript node.js loopbackjs

4
推荐指数
1
解决办法
3476
查看次数

如何在Loopback中覆盖内置登录方法?

我已经创建了一个基于内置的新用户模型.我正在尝试这个:

module.exports = function(TiUser) {
  TiUser.on('dataSourceAttached', function(obj) {
    var login = TiUser.login;
    TiUser.login = function(credentials, include, cb) {
      var result = login.apply(this, credentials);

      // Do my stuff
      cb(null, my_data);
    };
  });
};
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用......出了什么问题?或者这怎么可能做得对?

谢谢

overriding login loopbackjs

4
推荐指数
1
解决办法
2082
查看次数

使用访问令牌重置环回密码

我正在一个使用Loopback作为框架的项目,其中包括用户和身份验证。我添加了生成并通过电子邮件发送的密码重置路由,并且一切似乎都正常运行。最近,我发现密码重置似乎不起作用。此处重置密码的过程是:

  • 用户通话密码重置方法
  • 通过重置事件发送电子邮件,包括用户ID和访问令牌
  • 在重置链接中,将$ http.defaults.headers.common.authorization设置为传递的令牌
  • 调用user.prototype $ updateAttributes(由lb-ng生成)以基于表单更新密码属性

预期的行为是密码将在密码重置表单上更新。相反,我收到了401或500的授权错误(似乎来回了)。我注意到在发送给API的实际标头中,授权令牌与我从路由传递的内容不匹配。尝试使用LoopBackAUth.setUser进行设置无效,并且在实际发送请求之前也不会更新授权属性。

第一次添加时,我肯定会花时间测试它,但我不知道要改变什么才能打破它。我一直在遵循loopback-faq-user-management中的示例,但是在该示例中,我们有一个Angular前端而不是服务器侧视图。

编辑:

我尝试完全打开ACL,以查看是否可以更新用户对象(继承自User,但它是自己的类型)的密码(或任何属性)。尝试执行此操作时,我仍然收到401。

编辑#2:

这是我的ACL和有关如何调用此代码的示例代码。

来自模型定义的ACL

...
{
    "accessType": "*",
    "principalType": "ROLE",
    "principalId": "$owner",
    "permission": "ALLOW"
},
{
    "accessType": "EXECUTE",
    "principalType": "ROLE",
    "principalId": "$owner",
    "permission": "ALLOW",
    "property": "updateAttributes"
}
...
Run Code Online (Sandbox Code Playgroud)

auth.js

...
resetPassword: function(user) {
    return MyUser.prototype$updateAttributes(user, user).$promise;
}
...
Run Code Online (Sandbox Code Playgroud)

javascript node.js angularjs strongloop loopbackjs

4
推荐指数
1
解决办法
5501
查看次数

loopback automigrate vs autoupdate

当我们有模型并且我们想将它迁移到数据库时,我们只需在server/boot中创建脚本:

server.dataSource['myDbSource'].automigrate('MyMode', function(err){...})
Run Code Online (Sandbox Code Playgroud)

要么

server.dataSource['myDbSource'].autoupdate('MyMode', function(err){...})
Run Code Online (Sandbox Code Playgroud)

每个服务器上的第一个重新启动,在db中重新创建模式并清除数据,第二个可以创建模式或更改它(如果存在),但不是清除数据.当我们使用automigrate创建模式时,我们应该删除它(或者每次我们的数据都会丢失),但是当我们使用autoupdate时它可以保留在代码中(我们可以修改模型和模式将被更新).

看起来autoupdate更有用.当我们必须使用automigrate时呢?autoupdate是否有缺点支持automigrate?

我喜欢仅使用自动启动的工作流程,但只有在我决定时才设置env标志来更新模式.你怎么看?

javascript node.js loopbackjs

4
推荐指数
1
解决办法
4082
查看次数

使用loopback email数据源发送带附件的电子邮件

是否可以使用loopback email数据源发送附件?

我在源文档中看到的只有以下字段:

  • @property {String}到电子邮件收件人.需要.
  • 来自电子邮件发件人地址的@property {String}.需要.
  • @property {String} subject电子邮件主题字符串.需要.
  • @property {String} text电子邮件的文本正文.
  • @property {String} html电子邮件的HTML正文.

nodemailer loopbackjs

4
推荐指数
1
解决办法
2021
查看次数

如何在环回中制定API速率限制策略

我只想对每个帐户计划制定一个API请求速率限制,所以可以说我们有一个用户,每个用户都有一个计划,该计划对每天可以发出的API请求有一定的限制。

所以现在,我该如何在环回3.x中制定API限制政策。

谢谢

rest node.js express strongloop loopbackjs

4
推荐指数
1
解决办法
1655
查看次数

从Loopback 3迁移到Loopback 4

有什么自动方法可以将Loopback 3中的项目迁移到Loopback 4?例如,我在JSON中有模型定义:

{"name": "Item",
  "base": "PersistedModel",
  "forceId": true,
  "properties": {
    "id": {
      "type": "number",
      "id": true
    },
    "created": {
      "type": "Date",
      "postgresql": {
        "dbDefault": "now()"
      }
    },
    "name": {
      "type": "string",
      "required": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在LB4中自动创建相同的模型?

loopbackjs

4
推荐指数
1
解决办法
791
查看次数