我有这样的模特 -
{
"name": "MakeCallTestConfiguration",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"id": {
"type": "number",
"id": true,
"generated": true
},
"destination": {
"type": "string",
"required": true
},
"clientId": {
"type": "number",
"required": true
},
"logTime":{
"type" : "date",
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
对于"logTime",如何自动生成时间戳?我的意思是
"TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"
我正在创建由PostgreSQL支持的rest api.我喜欢Strongloop Loopback框架,它简化了api开发.但它的内置orm与续集相比如何?哪些高级功能已经作为专用的sql orm继承,在环回中缺少?也许最好继续使用sequelize,并使用一些其他的api助手而不是monolitic loopback框架?
我有一个具有许多属性的模型.其中一个是名为"developerId"的字段,它包含一个与MongoDB ObjectId具有相同长度和特征的字符串(它实际上是一个字符串化的ObjectId).
当我使用Node.js中的find()方法查询模型时,查询在执行之前会更新,并且"developerId"值将转换为ObjectId,然后无法匹配数据库中的任何字符串,因为它们是字符串,而不是的ObjectID.
{where: {developerId: '55118c5fc921fa170f05080b'}}
Run Code Online (Sandbox Code Playgroud)
转换为:
{where: {developerId: ObjectId('55118c5fc921fa170f05080b')}}
Run Code Online (Sandbox Code Playgroud)
该字段不是id字段,在模型json定义中指定为类型:'string'.
如何关闭此auto-object-id行为以便控制Loopback的查询?
我已经遵循环回脱机同步示例并使用嵌入式文档创建自己的模型.我创建了一个名为Project的Model,其中ProjectMembers是嵌入式模型.这是我的模型:
Project.json
{
"name": "Project",
"base": "PersistedModel",
"strict": "throw",
"persistUndefinedAsNull": true,
"trackChanges": true,
"properties": {
...
},
"relations": {
"members": {
"type": "embedsMany",
"model": "ProjectMember",
"property": "members",
"options": {
"validate": true,
"forceId": false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
ProjectMember.json
{
"name": "ProjectMember",
"base": "Model",
"idInjection": true,
"properties": {
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
在服务器端model-config.json中我更新了数据源,如下所示:
"Project": {
"dataSource": "my_db"
},
"ProjectMember": {
"dataSource": "transient"
}
Run Code Online (Sandbox Code Playgroud)
在lbclient/models /的客户端,我添加了2个文件local-project.json和remote-project.json,与local-todo.json和remote-todo.json完全相同.我更新了客户端model-config.json文件,如下所示:
"RemoteProject": {
"dataSource": "remote"
},
"LocalProject": { …Run Code Online (Sandbox Code Playgroud) 我将一个Loopback应用程序部署到Heroku,但它一直崩溃并出现错误
Web process failed to bind to $PORT within 60 seconds of launch
我知道它可以连接到Heroku的动态端口,所以我将我的端口设置为进程环境
app.start = function () {
// start the web server
var port = process.env.PORT || 3000;
app.set('port', port);
app.use(loopback.static(path.resolve(__dirname, '../client')));
app.use(loopback.static(path.resolve(__dirname, '../.tmp')));
return app.listen(function () {
app.emit('started');
console.log('Web server listening at: %s', app.get('url'));
});
};
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题.
任何的想法?
我试图了解如何使自定义JWT路由适应环回安全模型.我的应用程序有一个涉及SMS的身份验证"舞蹈",使用优秀的描述产生有效的JWT令牌.我正在使用jsonwebtoken,事情按预期工作.获得令牌后,我的angular.js客户端会在Authorisation: JWT ..token..标头中发送带有每个请求的令牌(发现有冲突的文档,其中一个说JWT,一个Bearer,但我可以解决这个问题).
现在我想在loopback应用程序中使用令牌.我想使用ACL系统环回提供.我确实阅读了以下资源:
我不清楚接下来的步骤是什么.我有工作:
我需要:
非常感谢帮助
我想在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) 我正在尝试在进行集成测试时使用内存连接器作为数据源.但似乎总是连接到mongodb-datasource.
我所做的一个主要工作是将每个模型的数据源更改为内存.但必须有更好的方法来做到这一点.我正在从gulp任务中运行我的测试.我的roflmao模型 - 记忆 - 黑客:
var models = require('../server/model-config.json');
for (var key in models) {
var model = loopback.getModel(key);
loopback.configureModel(model, {dataSource: memory});
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改应用程序的数据源?或者我是否必须更改每个模型的数据源..?
这样做的一种方法是在测试期间更改环境变量,但到目前为止,没有运气..我正在使用gulp-task预处理执行此操作.
希望通过更改环境变量,它将使用datasources.integrationtesting.js,其中我将内存作为数据源.
我的任务:
return gulp.src('integration-tests/*.js')
.pipe($.preprocess({context: {NODE_ENV: 'integrationtesting'}}))
.pipe($.mocha())
Run Code Online (Sandbox Code Playgroud)
我正在使用:
感谢任何评论.. :)
有没有办法使用Diacritic-Case-Insensitive选项查询Loopback + MongoDB上的结果?
例如,如果我想搜索查询olimpic,并且数据库包含以下单词:
Olímpic
olimpic
Olimpic
Run Code Online (Sandbox Code Playgroud)
然后,所有上述内容都应作为结果返回.我尝试过下面列出的多个查询和其他组合,但到目前为止还没有任何工作.
{"where":{"name.text":{"like":"olimpic","options":"i"}}}
{"where":{"name.text":{"like":"/^olimpic$/i","options":"i"}}}
{"where":{"name.text":{"like":"/.*olimpic.*/i"}}}
{"where":{"name.text":{"regexp":"/.*olimpic.*/i"}}}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
提前致谢!
我在我的loopback应用程序中重命名了许多模型和表,但是现在我必须迁移到这个模型定义.
我需要运行autoMigrate().它必须在dataSource对象上运行,但文档没有提供有关获取其中一个的帮助.
到目前为止,我已经创建了一个新脚本/boot:
var loopback = require('loopback');
var app = module.exports = loopback();
app.loopback.DataSource.automigrate()
Run Code Online (Sandbox Code Playgroud)
但是这个数据源对象不包含autoMigrate函数......
我已经尝试运行strongloop arc来使用那里存在的自动迁移按钮,但页面崩溃时出现此错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module Arc due to:
Error: [$injector:modulerr] Failed to instantiate module Metrics due to:
Error: [$injector:nomod] Module 'Metrics' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.3.20/$injector/nomod?p0=Metrics
at http://localhost:56073/scripts/vendor/angular/angular.js:63:12
at http://localhost:56073/scripts/vendor/angular/angular.js:1778:17
at ensure (http://localhost:56073/scripts/vendor/angular/angular.js:1702:38) …Run Code Online (Sandbox Code Playgroud) loopbackjs ×10
strongloop ×7
node.js ×4
mongodb ×2
crash ×1
express ×1
heroku ×1
javascript ×1
json ×1
jwt ×1
loopback ×1
offline ×1
passport.js ×1
regex ×1
sequelize.js ×1