我想使用环回自动增加 mongodb 文档编号。
我在 mongo 中做了功能
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
db.tweet.insert(
{
"_id" : getNextSequence("userid"),
"content": "test",
"date": "1",
"ownerUsername": "1",
"ownerId": "1"
}
)
Run Code Online (Sandbox Code Playgroud)
它在 mongo shell 中工作。
但是,当我使用 loopback.js 浏览器(http://localhost:3000/explorer/)插入时,它不起作用。显示 400 错误(SytaxError)代码。
我不能在环回休息 API 中使用 mongo 函数?
我认为问题是这一行中的引号getNextSequence("userid"),
我正在使用MySQL和strongloop,我有一个存储过程来交换数据
swap_XYZ('<old_abc>', '<new_new>')
Run Code Online (Sandbox Code Playgroud)
我无法在文档中找到任何示例来调用存储过程。如何调用此存储过程?提前致谢。
我使用“lb4 application_name”命令创建了一个环回 4 应用程序。运行“npm start”后,显示“lb-clean”命令未找到错误。我的节点版本是16.13.2,环回版本是4.0.0。
目前正在测试一系列框架以确定我公司未来使用的良好候选者,LoopBack几乎完美地满足了我的需求引起了我的注意.
但是,我觉得他们的ACL模型在某些情况下非常有限.让我们采用以下用例:在协作旅行管理网站上,用户可以创建和/或加入公共旅行.我们假设以下API:
/Travels 列出用户拥有的所有旅行/Travels/public 列出所有公共旅行/Travels/{id}/join 使用给定的ID加入Travel构建这样的API是否需要重新发明轮子?还是要实现一些中间件?
每个字段的ACL也是如此.假设您有一些清单项目,一些是手动添加的,另一些是自动生成的.除了更改"完成"字段外,您能否仅在自动阻止WRITE操作?
我一直在使用自定义init.d/app.conf脚本部署环回应用程序slc run --detach --cluster "cpu",但是我想按照建议使用strong-pm.
但我遇到了一些限制,我正在寻找有关如何复制我目前熟悉的设置的任何指导.
目前,我设置的特定应用程序的配置中server/config.local.js和server/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) 您好我们已经尝试在运行ubuntu 14.4的几台不同服务器上安装strongloop,我们每次都会遇到同样的问题.它在同一步骤失败了.我们完全卸载了节点和npm,并按照有关在ubuntu数字海洋上安装的指南进行操作.我们甚至创建了一个预先安装了节点的新Droplet.没运气.创建了一个带有centos的液滴并遵循指示.必须安装但运行slc loopback时我们得到一个缺少模块错误.
终端响应`npm install -g strongloop
> utf-8-validate@1.2.1 install /usr/lib/node_modules/strongloop/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.40"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/strongloop/node_modules/ws/node_modules/utf-8-validate/.node-gyp"
make: Entering directory `/usr/lib/node_modules/strongloop/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
SOLINK_MODULE(target) Release/obj.target/validation.node: Finished
COPY Release/validation.node
make: Leaving directory `/usr/lib/node_modules/strongloop/node_modules/ws/node_modules/utf-8-validate/build'
> heapdump@0.3.7 install /usr/lib/node_modules/strongloop/node_modules/strong-supervisor/node_modules/heapdump
> node-gyp rebuild
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.40"
gyp …Run Code Online (Sandbox Code Playgroud) 我很好奇,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)
这是创建的文档.不createdAt和modified字段:
[ { username: 'admin',
password: …Run Code Online (Sandbox Code Playgroud) 我对ACL如何在环回上工作有点怀疑.
我正在关注示例https://github.com/strongloop/loopback-example-access-control
REST Api允许create调用将ownerid作为参数传递,但不进行任何验证.
因此,经过身份验证的用户可以创建项目并将ownerid设置为任何值.我认为应该只允许管理员角色设置属性.
我知道我可以放一些代码来进行验证..但我相信必须根据当前登录的用户自动设置值.我错了或者我错过了什么?
谢谢!
我正在学习LoopBack(又名Strongloop).当我去https://strongloop.com/它告诉我安装npm install -g apiconnect.所以,我正在学习带有脚手架的LoopBackapic loopback
一旦我得到一个入门项目apic loopback,并添加一个模型apic create --type model,看起来我定义我的Swagger的定义会自动更新(./definitions/server.yaml).因此,我可以在运行时探索这些API apic edit.
但是,当我编辑模型以扩展我的API时,如LoopBack文档(https://docs.strongloop.com/display/public/LB/Extend+your+API)所示,我没有看到更新的API文档...但是从看起来像"资源管理器"的文档中应该选择新的API端点.
我在这里错过了什么?当我创建手动API扩展时,是否应该运行一个swagger命令?或许这可能是代码中的一些神奇的评论?
结论:当我使用apicIBM推出时,如何让我的环回API自定义/扩展显示在资源管理器中?我必须使用apic create --type api吗?在我自定义API时,有没有办法让资源管理器接收我的更改?这东西究竟有多神奇吗?
我正在关注LoopBack的官方"入门"教程:https://loopback.io/doc/en/lb3/Use-API-Explorer.html
一切都很好看.但是,当在Web浏览器中打开API-Explorer时,它会给出404:
404无法获取/浏览器
这将返回404状态代码:http://0.0.0.0 : 3000/explorer
是否缺少Tutorial和最新的loopback-generator之间的文档或一些不兼容性?
我完全按照教程中提到的那样完成了每一步.
也许这个名为"server/config.json"的配置文件可以提供帮助,因为我偶然发现了一个设置"legacyExplorer":false.
或者是否有必要将资源管理器安装为单独的组件?
{
"restApiRoot": "/api",
"host": "0.0.0.0",
"port": 3000,
"remoting": {
"context": false,
"rest": {
"normalizeHttpPath": false,
"xml": false
},
"json": {
"strict": false,
"limit": "100kb"
},
"urlencoded": {
"extended": true,
"limit": "100kb"
},
"cors": false,
"handleErrors": false
},
"legacyExplorer": false
}
Run Code Online (Sandbox Code Playgroud) strongloop ×10
loopbackjs ×8
node.js ×5
loopback ×2
acl ×1
angularjs ×1
apiconnect ×1
deployment ×1
increment ×1
javascript ×1
mongodb ×1
ubuntu ×1