我已经工作了几个小时而且我完全迷失了,因为环回文档没有帮助.
我正在尝试将应用程序逻辑编写到模型中.该文档就在这里.不幸的是,除了将外部值传递给远程方法并再次返回之外,该示例并未演示任何有用的内容.我想了解如何在此上下文中运行查询并访问模型数据,但我已搜索了几个小时,甚至无法找到有关这些简单任务的文档.也许我只是在寻找错误的地方.有人可以帮忙吗?
我正在使用strongloop loopback后端进行角度应用.
我还使用loopback-passport模块通过facebook整合第三方登录.
在loopback-example-passport中一切都很好,在重定向到我的应用程序之前,我的应用程序中的一切都很好.已创建用户和访问令牌.
代码:
app.get('/auth/login', ensureLoggedIn('/#login'), function(req, res, next) {
console.log('LOOGED IN!!');
console.log(req.user);
res.redirect('/#auth/login');
});
Run Code Online (Sandbox Code Playgroud)
工作良好.但我无法理解.如何为我的角度应用程序提供经过身份验证的状态
我试图让控制器路由'/#auth/login':
.controller('AuthCalbackCtrl', function($scope, $cookies, $location, AppAuth, $http, User, LoopBackAuth) {
//analogue of User.login responce interceptor
LoopBackAuth.currentUserId = $cookies['userId'] || null;
LoopBackAuth.accessTokenId = $cookies['access-token'] || '';
LoopBackAuth.rememberMe = false;
LoopBackAuth.save();
//asking for currentUser
User.getCurrent(function(user) {
console.log('ser.getCurrent ', user);
});
$location.path('/');
})
Run Code Online (Sandbox Code Playgroud)
此代码发出请求GET/api/users/2但收到401错误.
如果我调整文件/loopback/lob/models/user.js设置权限:
principalType: ACL.ROLE,
// principalId: Role.OWNER,
principalId: Role.EVERYONE,
permission: ACL.ALLOW,
property: "findById"
Run Code Online (Sandbox Code Playgroud)
然后请求GET/api/users/2接收200并且一切正常.
我有点困惑.虽然我知道access-token和userId,但我无法理解如何使我的角度应用程序进行身份验证以进行环回
有任何想法怎么做?
我试图使用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中有一个模型,我想将其作为文件下载而不是将其显示为文本.我有我有一些旧的PHP代码bastardized适应尝试和下载响应的文件.
这是我的代码:
Issue.afterRemote('getCSV', function(ctx, affectedModelInstance, next) {
var result = ctx.result;
console.log(result);
var currentdate = new Date();
var datetime = currentdate.getDate() + " " +
+ (currentdate.getMonth()+1) + " " +
+ currentdate.getFullYear() + " " +
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds(); + " ";
ctx.res.set('Expires', 'Tue, 03 Jul 2001 06:00:00 GMT');
ctx.res.set('Cache-Control', 'max-age=0, no-cache, must-revalidate, proxy-revalidate');
ctx.res.set('Last-Modified', datetime +'GMT');
// force download
ctx.res.set('Content-Type','application/force-download');
ctx.res.set('Content-Type','application/octet-stream');
ctx.res.set('Content-Type','application/download');
// disposition / encoding on response …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过loopback api explorer对postgres数据库进行查询:
{"where": {"archived_at":{ "neq": null }}}
Run Code Online (Sandbox Code Playgroud)
但是,我只获得archived_at为null的结果?
关于弃用环回测试的谷歌小组发布的帖子中有一个问题,即提供一个如何在没有环回测试的情况下实现测试的正确示例.该线程谈论使用supertest而不是.
下面是我尝试将Mocha,supertest和模型(来自app.js)结合起来.当我自己运行文件时,结果非常好.但是如果我有另一个测试文件(比如test-teacher.js)那么第一个测试文件(称为test-student.js)就会以奇怪的方式开始失败,我无法描述.
我错过了什么或者可以使用不能使用的模型,就像我在下面使用它们一样?
describe('/Student', function () {
var server = require('../server/server')
var loopback = require('loopback')
var supertest = require('supertest')
var request = require('supertest')(server)
var dataSource = server.dataSource('db', {adapter: 'memory'})
var Student = dataSource.define('Student', {
'id': Number,
'points': Number
});
beforeEach(function () {
Student.updateOrCreate({id: 1, points: 5000});
})
it('Post a new student', function (done) {
request.post('/api/Students').send({points: 5000}).expect(200, done)
})
})
Run Code Online (Sandbox Code Playgroud) 如何通过带有strongloop的REST API执行原始查询并公开结果?
我已经阅读了有关使用的内容hooks,dataSource.connector.query()但我找不到任何有用的例子.
我正在创建由PostgreSQL支持的rest api.我喜欢Strongloop Loopback框架,它简化了api开发.但它的内置orm与续集相比如何?哪些高级功能已经作为专用的sql orm继承,在环回中缺少?也许最好继续使用sequelize,并使用一些其他的api助手而不是monolitic loopback框架?
loopbackjs ×10
node.js ×6
strongloop ×5
javascript ×2
angularjs ×1
mocha.js ×1
mysql ×1
passport.js ×1
postgresql ×1
sequelize.js ×1
supertest ×1
swagger ×1