我是AngularJS的新手.任何人都可以解释这些AngularJS运算符之间的区别:&, @ and =用适当的例子隔离范围.
我已经从 Android Studio SDK 安装了构建工具,如下所示:SDK 平台中的工具 -> SDK Manager -> Android SDK -> Android 10,11,12,以及 SDK 工具选项卡中的 Adnroid SDK Build-Tools 32-rc1 (还有更多的包)。
当我尝试构建项目时,出现以下错误:
Caused by: java.lang.RuntimeException: No installed build tools found. Install the Android build tools version 30.0.3 or higher.
Run Code Online (Sandbox Code Playgroud)
在~/Library/Android/sdk/我得到了 build-tools 目录,在那里我得到了:31.0.0 32.0.0-rc1dirs.
我还在 PATH 中添加了这个:
export ANDROID_HOME=~/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
Run Code Online (Sandbox Code Playgroud)
在 Android 12 之前,这一切都可以使用。
我缺少什么?为什么Android系统这么难运行?
我想根据 URL 版本指定管理我的 REST API。
例如:
api.mydomain.com/v1/rides/
// will return all rides based on v1.
api.mydomain.com/v2/rides/
// will return all rides based on v2 (probably with some braking changes).
api.mydomain.com/rides/
// will return all rides based on v2, since v2 is the newest.
Run Code Online (Sandbox Code Playgroud)
棒极了。
在我们开始处理处理这个问题的实际方法之前,我们应该谈谈逻辑上的“默认最新版本控制”——我的意思是,如果用户不打算指定任何类型的版本,我应该为他提供最新版本还是抛出404 未找到错误?
我应该强制用户指定 API 版本吗?
如果我这样做,是否有任何“解析”特定/最新版本的标准?
我告诉你为什么我担心这个:假设“Dan”安装了应用程序,它在最新的 API 端点(例如 V1)上进行中继,然后我发布了具有制动变化的 V2。由于 Dans 默认“收听”最新版本,因此 Dans 应用程序将崩溃。
这根本不是一个好的行为。也许我应该阻止使用“默认的最新版本”?也许我应该使用 Dans 应用程序来侦听特定版本,而将我的 API 作为 Web 服务访问的远程开发人员可以有特权在特定版本或默认情况下选择最新版本?
有什么标准吗?
**
现在让我们实际谈谈。假设我有一个路由器处理这些请求,可能是这样的:
// app.js file
app.use((req, res, next) => {
try { …Run Code Online (Sandbox Code Playgroud) 我有这个 Joi 架构:
let schema = {};
let stations = {
contact: {
first_name: Joi.string().min(2).max(10).regex(Regex.alphabeta, 'alphabeta').allow("").error(JoiCustomErrors),
last_name: Joi.string().min(2).max(10).regex(Regex.alphabeta, 'alphabeta').allow("").error(JoiCustomErrors),
phone: Joi.string().min(10).max(10).regex(Regex.num, 'num').allow("").error(JoiCustomErrors),
},
address: {
place: Joi.string().min(2).max(10).regex(Regex.alphanum, 'alphanum').required().error(JoiCustomErrors),
city: Joi.string().min(2).max(30).required().error(JoiCustomErrors),
street: Joi.string().min(2).max(30).regex(Regex.alphabeta, 'alphabeta').required().error(JoiCustomErrors),
house_number: Joi.string().min(1).max(6).regex(Regex.alphanum, 'alphanum').allow("").error(JoiCustomErrors)
},
passengers_amount: Joi.number().min(0).max(4).required().error(JoiCustomErrors),
notes: Joi.string().min(2).max(100).regex(Regex.alphanum, 'alphanum').allow("").error(JoiCustomErrors)
};
schema.stations = Joi.array().items(stations).min(1).max(5).required().error(JoiCustomErrors);
Run Code Online (Sandbox Code Playgroud)
如您所见,schema.stations是一个包含最少 1 个和最多 5 个元素的数组。我希望每个元素只有在"contact.first_name" AND "contact.last_name" AND "contact.phone"存在(或根据架构正确填充)时才具有“address.place”字段。
我怎样才能做到这一点?
我收到此错误:
Refused to load the image 'blob:file:///cf368042-bf23-42b6-b07c-54189d3b0e01' because it violates the following Content Security Policy directive: "default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.
Run Code Online (Sandbox Code Playgroud)
在尝试加载 mapboxGL 地图时。这是我的 CSP 标签:
<meta http-equiv="Content-Security-Policy"
content="
worker-src blob:;
child-src blob: gap:;
default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:">
Run Code Online (Sandbox Code Playgroud) 警告您的应用目前的目标是API级别25,并且必须至少达到API级别26,以确保它基于针对安全性和性能优化的最新API构建.
从2018年8月开始,新应用必须至少定位到Android 8.0(API级别26).从2018年11月开始,应用更新必须定位到Android 8.0(API级别26).
提示:更改应用的目标API级别.学习如何.
我正在使用Cordova和Ionic 3.使用以下方法构建应用程序: ionic cordova build android --release-prod
我该怎么做,忽略这个或修复以及如何做?
谢谢.
当我运行时,mongo我可以使用show dbs命令列出数据库,并执行写入和读取操作。
但是在使用客户端(Robot 3T)时,我收到下一个错误:
Error:
Network error while attempting to run command 'saslStart' on host 'localhost:27017'
Run Code Online (Sandbox Code Playgroud)
本地主机数据库,使用 macOS Catalina。
由于用户信息可以更改,但不是由用户更改,而是由某些管理员或其他人更改,因此令牌用户信息(有效负载)不会更新为数据库中包含的信息。
但我想尽可能少地执行数据库请求,所以我考虑将用户信息存储在他们的令牌中。
我认为这是错误的,我最好只存储他们的唯一 ID,即 MongoDB 中的索引和时间戳 - 因此用户不会一遍又一遍地拥有相同的令牌 - 他必须从服务器完成登录。
但随后我需要对数据库进行查询,并且我想尽可能少地查询。
我应该只用用户的 ID 查询数据库吗?
我刚刚使用 Node.js 初始化了一个新项目,并尝试使 package.json 文件中的脚本正常工作。
例如我有下一个 package.json 文件:
{
"name": "my-app-name",
"version": "1.0.0",
"description": "Description server",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
"author": "Something LTD",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.3",
"cron": "^1.3.0",
"crypto": "^1.0.1",
"docusaurus-init": "^1.0.2",
"exceljs": "^1.5.0",
"express": "^4.16.3",
"express-limiter": "^1.6.1",
"jsonwebtoken": "^8.3.0",
"mongojs": "^2.6.0",
"npm": "^6.1.0",
"point-in-polygon": "^1.0.1",
"request": "^2.87.0",
"socket.io": "^2.1.1",
"socket.io-redis": "^5.2.0",
"xmldom": "^0.1.27"
},
"devDependencies": {
"t4u": "^1.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我要么试图运行npm test …
我想更新 MongoDB 中包含对象的文档。由于更新的对象是由用户给出的,我不知道他到底要改变什么。
例如,我在用户集合中有此文档:
{
_id: 1,
date: new Date(),
info: {
first_name: "a",
last_name: "b",
phone: "c"
}
}
Run Code Online (Sandbox Code Playgroud)
用户可以编辑名字和姓氏,但不能编辑电话。
这是req.body(我从用户那里收到的输入):
{
info: {
first_name: "aa"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,为了仅更新“info.first_name”并保留存储在 info ojbect 中的其他字段,我必须设置一个更新查询,如下所示:
db.users.update({}, {$set: {"info.first_name": req.body.info.first_name}}, cb);
Run Code Online (Sandbox Code Playgroud)
但输入可以是动态且可变的。我不知道是否总是更新的名字,它可以是姓氏,甚至是其他子对象,例如地址:“info.address.city”(例如)
因此,我像这样处理这些更新:
$set: req.body
Run Code Online (Sandbox Code Playgroud)
就是这样。它有效,但我对此有疑问。它替换了整个信息对象,并且不保留存储在其中的其他密钥 - 电话被删除,姓氏被删除。
有没有办法告诉 MongoDB 不要替换整个对象,而只是更新那些提到的键?
node.js ×5
mongodb ×3
android ×2
angularjs ×1
api ×1
app-store ×1
cordova ×1
google-play ×1
html ×1
javascript ×1
joi ×1
jwt ×1
mapbox ×1
npm ×1
npm-run ×1
npm-scripts ×1
performance ×1
rest ×1
schema ×1
token ×1
validation ×1
versioning ×1