这是令人抓狂的,我如何获得一个环回模型,以便我可以以编程方式使用它?我有一个名为"通知"的持久模型.我可以使用REST资源管理器与它进行交互.我希望能够在服务器中使用它,即Notification.find(...).我执行app.models()并可以看到它列出.我这样做了:
var Notification = app.models.Notification;
Run Code Online (Sandbox Code Playgroud)
得到一个大胖子"未定义".我这样做了:
var Notification = loopback.Notification;
app.model(Notification);
var Notification = app.models.Notification;
Run Code Online (Sandbox Code Playgroud)
和另一个大胖子"未定义".
请解释我所要做的所有事情,以获得我使用的模型:
slc loopback:model
Run Code Online (Sandbox Code Playgroud)
提前致谢
我loopback用来存储图像到server.
我想修改该文件的名称得到保存到服务器之前的文件.
另外我想在保存之前将其转换为另一个缩略图形式.
这就是我的表现.
在客户端
Upload.upload(
{
url: '/api/containers/container_name/upload',
file: file,
fileName: "demoImage.jpg",
//Additional data with file
params:{
orderId: 1,
customerId: 1
}
});
Run Code Online (Sandbox Code Playgroud)
在服务器端我收到查询"params"但没有得到"文件名"
我的存储型号名称是 container
Container.beforeRemote('upload', function(ctx, modelInstance, next) {
//OUPTUTS: {orderId:1, customerId:1]}
console.log(ctx.req.query);
//Now I want to change the File Name of the file.
//But not getting how to do that
next();
})
Run Code Online (Sandbox Code Playgroud)
如何更改在服务器上保存的文件的文件名?
我是Strongloop的新手,我找不到有关如何自定义响应类(我构建的对象的模型架构)的信息,我不知道如何在API资源管理器上显示带有自定义数据的对象.
例如,我有一个名为score的自定义远程方法
POST /Challenges/score
Run Code Online (Sandbox Code Playgroud)
我想为参数显示data一个自定义模型模式而不是单个参数,而不是模型模式用于挑战,正文上的数据具有所有参数并向用户显示数据类型:模型模式,这可能吗?
{
"id": "string",
"limit": 0,
"order": "string",
"userId": "string"
}
Run Code Online (Sandbox Code Playgroud)
另一方面,在Response Class中,我想显示响应对象的模式.像这样的东西:
{
"id":"string",
"userId":"string",
"user": {},
"totalScore":0,
"tags": []
}
Run Code Online (Sandbox Code Playgroud)
我看了不同的问题(这个和这个),但找不到解决这个问题的东西.
更新
这是远程方法的定义
Challenge.remoteMethod('score', {
accepts: { arg: 'data', type: 'object', http: { source: 'body' } },
returns: {arg: 'scores', type: 'array'},
http: {path: '/score', verb: 'post'}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试连接到我在MLab托管的数据库.我正在使用StrongLoop API.我已将托管数据库的配置信息放入我的datasources.json和config.json文件中,但每当我运行该目录时npm start,我都会得到throw new Error ('double colon in host identifier';)api \node_modules\mongodb\lib\url_parser.js:45.
我还确保安装loopback-connecter-mongodb npm包.
这是一个datasources.json片段(当然没有实际的数据库详细信息):
{
"db": {
"name": "db",
"connector": "mongodb",
"host": "ds047355.mlab.com",
"database": "dbtest",
"username": "user",
"password": "fakepassword",
"port": 47355
}
}Run Code Online (Sandbox Code Playgroud)
这是config.json文件:
{
"restApiRoot": "/api",
"host": "ds047355.mlab.com",
"port": 47355,
"remoting": {
"context": {
"enableHttpContext": false
},
"rest": {
"normalizeHttpPath": false,
"xml": false
},
"json": {
"strict": false,
"limit": "100kb"
},
"urlencoded": {
"extended": true,
"limit": "100kb"
},
"cors": false,
"errorHandler": …Run Code Online (Sandbox Code Playgroud)我试图使用REST API列出我的loopback 2.0应用程序中的所有用户,我收到以下错误:
{
"error": {
"name": "Error",
"status": 401,
"message": "Authorization Required",
"statusCode": 401,
"stack": "...."
}
}
Run Code Online (Sandbox Code Playgroud)
我手动将ACL添加到model-config.json文件中:
"User": {
"dataSource": "db",
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW",
"accessType": "*"
}
]
},
Run Code Online (Sandbox Code Playgroud)
由于失败,我创建了一个基于User内置模型的模型:
{
"name": "Admin",
"base": "User",
"properties": {},
"validations": [],
"relations": {},
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW",
"accessType": "*"
}
],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
但是在REST API中我仍然遇到同样的问题:
{
"error": {
"name": "Error",
"status": 401,
"message": "Authorization Required",
"statusCode": 401, …Run Code Online (Sandbox Code Playgroud) 我正在尝试让Loopback发现并构建我的第一个表.我在他们的页面底部使用了这个简单的例子:
我看到了我正在发现的表的输出,但API Explorer没有显示表或任何新生成的端点.此外,不使用新表对象更新model-config.js文件.以下是在服务器启动时完成的代码的基本部分:
var loopback = require('loopback');
var boot = require('loopback-boot');
var DataSource = require('loopback-datasource-juggler').DataSource;
var mysqlSource = require('./datasources.json');
var dataSource = new DataSource('mssql', mysqlSource.mysqlserver);
var app = module.exports = loopback();
// Set up the /favicon.ico
app.use(loopback.favicon());
// request pre-processing middleware
app.use(loopback.compress());
// -- Add your pre-processing middleware here --
dataSource.discoverAndBuildModels('CATS', {owner: 'mamacat'}, function (err, models) {
models.Cat.find(function (err, cat) {
if (err) {
console.error(err);
} else {
console.log(cat);
}
dataSource.disconnect();
});
});
// boot scripts mount components like …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过loopback api explorer对postgres数据库进行查询:
{"where": {"archived_at":{ "neq": null }}}
Run Code Online (Sandbox Code Playgroud)
但是,我只获得archived_at为null的结果?
如何通过带有strongloop的REST API执行原始查询并公开结果?
我已经阅读了有关使用的内容hooks,dataSource.connector.query()但我找不到任何有用的例子.
问题非常简单:有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?
但对于那些你想知道为什么有人甚至想要这样做的人呢?......这个问题背后的动机可能不太明显.所以请允许我解释一下:
我使用的东西类似于一个名为loopback的app-server.我的nodejs应用程序整齐地分布到客户端,公共和服务器文件夹中.
我经常需要在我的common文件夹中重用其他项目中的模型.虽然我可以通过使用.npmignore删除其他东西将该文件夹作为单独的NPM模块发布:
/*
/common/utils
/common/models/*.js
!/common/models/*.json
我无法package.json从已发布的内容中删除实际运行我的应用程序所需的当前杂乱.
$ npm pack
$ tree -L 2 ~/dev/w2/node_modules/warehouse
~/dev/w2/node_modules/warehouse
??? README.md
??? common
? ??? models
??? node_modules
? ??? ...
? ??? ...
??? package.json
事实上,我过滤掉了除了我的common/models文件夹以外的所有内容,但是因为我不确定如何在打包之前动态调整package.json文件或者作为打包它的一部分...一个npm install将放下真正不属于的依赖关系需要.
我不喜欢单独使用模型创建一个单独的项目,因为这迫使我将其添加为核心项目的依赖项,并且活动开发分为两个项目,它们曾经只是一个项目.npm link等等是一种很好的方法来解决它,但它增加了开发人员设置的复杂性,当新人加入并确保没有人检查错误的东西.
那么有没有办法从单个nodejs项目向npmjs注册表发布两个不同的NPM模块?或者某种方式使用不同的package.json文件进行单独的发布但所有来自一个项目?
更新:我的目标是什么?
通过将其作为NPM模块发布,从我的核心项目中重用其他项目中的模型.没有放弃继续开发我的核心项目作为一个原子实体没有npm link等的便利,因为当不仅仅是一个人正在努力它时,它会变得混乱.
我想在Strongloop应用程序中使用不同的特定于环境的数据源配置.我在https://docs.strongloop.com/display/public/LB/Environment-specific+configuration上看到配置的优先级是:
我已经声明了三个数据源配置文件: datasources.json:
{}
Run Code Online (Sandbox Code Playgroud)
datasources.local.json:
{
"db": {
"name": "db",
"connector": "loopback-connector-mongodb",
"host":"127.0.0.1",
"port": "27017",
"database": "woowDev"
}
}
Run Code Online (Sandbox Code Playgroud)
和datasources.staging.js:
module.exports = {
db: {
connector: 'mongodb',
hostname: process.env.OPENSHIFT_MONGODB_DB_HOST,
port: process.env.OPENSHIFT_MONGODB_DB_PORT,
user: process.env.OPENSHIFT_MONGODB_DB_USERNAME,
password: process.env.OPENSHIFT_MONGODB_DB_PASSWORD,
database: 'woow'
}
};
Run Code Online (Sandbox Code Playgroud)
现在,除非我在datasources.json中放置datasources.local.json的配置,否则它不起作用.我一直收到错误:AssertionError: User is referencing a dataSource that does not exist: "db"
我还尝试将本地conf添加到staging conf并定义变量NODE_ENV,但它不会加载datasource.staging.js.我通过这样做来定义NODE_ENV:
export NODE_ENV=staging
Run Code Online (Sandbox Code Playgroud) strongloop ×10
loopbackjs ×8
node.js ×6
javascript ×4
express ×1
json ×1
methods ×1
model ×1
mongodb ×1
mysql ×1
npm ×1
postgresql ×1
response ×1