标签: loopbackjs

StrongLoop:如何在loopback.boot()时在models /目录中定义模型?

在Loopback文档初始化应用程序时,有两件事:

第一:

Loopback.boot()根据json定义文件或给定选项加载数据源和模型,然后models /boot /目录加载所有js文件

然后 :

"不要在多个文件中使用app.boot()和app.model(name,config)进行组合,因为它可能导致模型由于竞争条件而未定义.为避免这种情况,请使用app.boot()确保所有模型作为模型定义的一部分传递."

这两者似乎不矛盾吗?

我有许多模型要定义,我不想在一个巨大的json文件中定义,因此想要在js每个模型中放置一个文件,models/在启动时加载所述目录.

我目前所做的是定义一个模型,models/ExampleModel.js如下所示:

    var properties = {
        fieldOne: { type: String, required: true },
        otherField: { type: Number }
    };

    var options = {
        relations: {
            collections: {
                type: "belongsTo",
                model: "user"
            }
        }
    };

    var Model = require('loopback').Model;
    module.exports = Model.extend('ExampleModel', properties, options);
Run Code Online (Sandbox Code Playgroud)

问题是:在期间boot(),模型已加载,但未附加到应用程序或任何数据源.它没有暴露给REST API.

我尝试了一个小的补充,models.json以在应用程序中启用该模型:

"examplemodel": {
    "options": …
Run Code Online (Sandbox Code Playgroud)

javascript model node.js strongloop loopbackjs

2
推荐指数
1
解决办法
4603
查看次数

strongloop slc部署env var并发症

我一直在使用自定义init.d/app.conf脚本部署环回应用程序slc run --detach --cluster "cpu",但是我想按照建议使用strong-pm.

但我遇到了一些限制,我正在寻找有关如何复制我目前熟悉的设置的任何指导.

目前,我设置的特定应用程序的配置中server/config.local.jsserver/datasources.local.js,最重要的是PORT在该应用程序应该监听上的连接.这适用slc run于本地开发和远程部署进行暂存,我所做的就是为每个不同的应用程序设置不同的env变量:

datasources.local.js:

module.exports = {
  "mysqlDS": {
    name: "mysqlDS",
    connector: "mysql",
    host: process.env.PROTEUS_MYSQL_HOST,
    port: process.env.PROTEUS_MYSQL_PORT,
    database: process.env.PROTEUS_MYSQL_DB,
    username: process.env.PROTEUS_MYSQL_USER,
    password: process.env.PROTEUS_MYSQL_PW
  }
}
Run Code Online (Sandbox Code Playgroud)

config.local.js:

module.exports = {
  port: process.env.PROTEUS_API_PORT
}
Run Code Online (Sandbox Code Playgroud)

当我使用strong-pm进行部署时,我无法控制此端口,并且它总是设置为3000 + N,其中N仅根据部署时分配给应用程序的服务ID递增.

所以即使我部署然后设置env使用

slc ctl -C http://localhost:8701 env-set proteus-demo PROTEUS_API_PORT=3033 PROTEUS_DB=demo APP_DOMAIN=demo.domain.com
Run Code Online (Sandbox Code Playgroud)

我看到强-pm在使用新的env vars重新部署时完全忽略了PROTEUS_API_PORT:

ENV has changed, restarting
Service "1" listening on 0.0.0.0:3001
Restarting next commit Runner: commit 1/deploy/default/demo-deploy
Start Runner: commit 1/deploy/default/demo-deploy
Request …
Run Code Online (Sandbox Code Playgroud)

deployment strongloop loopbackjs

2
推荐指数
1
解决办法
758
查看次数


LoopbackJS是否在新模型创建时自动创建createdAt和已修改字段?如何启用?

我很好奇,LB会自动创建createdAt和创建modified新模型的字段,就像RoR一样吗?LB文档说它应该,但是当我尝试创建一个新模型时,LB不会创建这些字段.这是我在MongoDB集合中创建新模型和新文档的脚本:

'use strict';

var server = require('./server');
var ds = server.dataSources.mongodb;
var collections = ['user'];


ds.automigrate(collections, function(er) {
    if (er) throw er;
    console.log('== Looback tables [' + collections + '] created in ', ds.adapter
        .name);

    server.models.user.create([{
        username: 'admin',
        password: "admin",
        email: 'admin@gmail.com',
    }], function(err, newUser) {
        if(err) {
            console.error("== Create ERROR ==:\n\r", err);
            ds.disconnect();
            process.exit(1);
        }
        console.log('== newUser ==:\n\r', newUser);
        ds.disconnect();
        process.exit();
    });
});
Run Code Online (Sandbox Code Playgroud)

这是创建的文档.不createdAtmodified字段:

 [ { username: 'admin',
    password: …
Run Code Online (Sandbox Code Playgroud)

strongloop loopbackjs

2
推荐指数
1
解决办法
1448
查看次数

Loopback"params"用于运行本机SQL查询

任何人都知道Loopback文档中的"params"是什么:

https://docs.strongloop.com/display/public/LB/Executing+native+SQL

它说:

执行本机SQL

要直接对数据连接模型执行SQL,请使用以下命令:

dataSource.connector.execute(sql, params, cb); 
Run Code Online (Sandbox Code Playgroud)

要么

dataSource.connector.query(sql, params, cb); // For 1.x connectors
Run Code Online (Sandbox Code Playgroud)

其中:sql - SQL字符串.params - SQL语句的参数.cb - 回调函数

postgresql node.js loopbackjs

2
推荐指数
1
解决办法
2622
查看次数

具有环回的findOne上的Mysql ER_BAD_FIELD_ERROR

我目前正在使用AngularJS,Loopback和MySQL构建一个webapp.它被罚了一段时间,最近我从前端回送的大部分请求开始因内部服务器错误而失败.

Error: ER_BAD_FIELD_ERROR: Unknown column 'scopes' in 'field list'
Run Code Online (Sandbox Code Playgroud)

我正在使用Loopback Angular SDK在我的前端发出请求.我真的不明白它为什么要搜索列范围,因为当我拥有它的id时我称之为搜索用户.

    $scope.user = !$scope.isLoggedIn ? {} : Appuser.findOne({
    filter: {
      where: { id: Appuser.getCurrentId() }
    }
  }).$promise.then(function(res){
    $scope.user = res;
  });
Run Code Online (Sandbox Code Playgroud)

我最近开始在这个应用程序上使用webpack,并且最近重新安装了我的所有节点模块,我不知道它是否可能产生了影响,但我怀疑是因为当我恢复提交时,它都被罚款问题仍然存在.但是因为我正在使用npm和package.json来处理我的模块,所以我不明白会出现什么问题.

mysql npm angularjs loopbackjs webpack

2
推荐指数
1
解决办法
440
查看次数

环回中的动态模型

如何在环回中创建动态模型,而不是对所有模型使用命令“lb 模型”。

例如:如果我想创建 30 个具有几乎相同属性的模型,将无法一次又一次地创建所有 30 个模型和那些相应的属性。

是否可以创建模型并使用回送将其迭代到另一个模型。请分享您的答案。

strongloop loopbackjs

2
推荐指数
1
解决办法
849
查看次数

如何在 LoopBack v4 中使用包含键建立关系

https://loopback.io/doc/en/lb4/HasMany-relation.html

我按照此步骤操作,然后尝试获取数据,include但得到 500。

500 Error: Invalid "filter.include" entries: {"relation":"ranks"}
Run Code Online (Sandbox Code Playgroud)

我想要的是获得具有相关等级的游戏对象。

排名模型

import { Entity, model, property, belongsTo } from '@loopback/repository';
import { Game, GameWithRelations } from './game.model';

@model({ settings: { strict: 'filter' } })
export class Rank extends Entity {
  @property({
    type: 'string',
    id: true,
  })
  id?: string;

  @property({
    type: 'string',
  })
  name?: string;

  @property({
    type: 'string',
  })
  shortName?: string;

  @property({
    type: 'string',
  })
  avatar?: string;

  @belongsTo(() => Game)
  gameId: string;

  constructor(data?: Partial<Rank>) {
    super(data);
  }
}

export …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js loopbackjs loopback4

2
推荐指数
1
解决办法
1525
查看次数

这是什么意思?500 错误:架构无效:data.$ref 应匹配格式“uri-reference”

使用 lb4 生成器创建模型、存储库和控制器。

向模型添加新字段时,我的 POST 将开始失败并出现以下错误: 500 Error: schema is invalid: data.$ref should match format "uri-reference"

该错误太模糊了,我对它所要求的内容的参考为零。

比较以下情况时验证失败:

$schema = http://json-schema.org/draft-07/schema

$ref = #/components/schemas/新用户

编辑:显然,如果您向控制器添加标题选项,它不知道如何处理自己

loopbackjs loopback4

2
推荐指数
1
解决办法
2205
查看次数

Loopback POST 条目数组?

我想用一个查询针对 10 个查询插入 10 个条目。

我读到可以通过发送这样的数组来做到这一点: 在此输入图像描述

但我收到这个错误: 在此输入图像描述

我需要设置一些东西吗?我根本不知道该怎么办。

带有示例的仓库:https://github.com/mathias22osterhagen22/loopback-array-post-sample

编辑:people-model.ts:

import {Entity, model, property} from '@loopback/repository';

@model()
export class People extends Entity {
  @property({
    type: 'number',
    id: true,
    generated: true,
  })
  id?: number;

  @property({
    type: 'string',
    required: true,
  })
  name: string;


  constructor(data?: Partial<People>) {
    super(data);
  }
}

export interface PeopleRelations {
  // describe navigational properties here
}

export type PeopleWithRelations = People & PeopleRelations;

Run Code Online (Sandbox Code Playgroud)

post loopbackjs loopback4

2
推荐指数
1
解决办法
1800
查看次数