我无法弄清楚 mongo ObjectID 和 ObjectId 之间的区别。文档说ObjectId,但是当我阅读代码时,我看到
import { ObjectID } from 'bson';
Run Code Online (Sandbox Code Playgroud)
让事情更加混乱的是猫鼬文档和代码。猫鼬还说 ObjectId http://mongoosejs.com/docs/api.html#types-objectid-js。但是当我阅读代码时,我看到了
// mongodb.ObjectID does not allow mongoose.Types.ObjectId(id). This is
// commonly used in mongoose and is found in an example in the docs:
// http://mongoosejs.com/docs/api.html#aggregate_Aggregate
// constructor exposes static methods of mongodb.ObjectID and ObjectId(id)
type ObjectIdConstructor = typeof mongodb.ObjectID & {
(s?: string | number): mongodb.ObjectID;
}
Run Code Online (Sandbox Code Playgroud)
那么ObjectID、ObjectId和mongoose ObjectId到底有什么区别呢?
我发现还有另一个 SO 在谈论这个 BSON::ObjectId vs Mongo::ObjectID
那里的链接虽然已经死了,但并没有涉及猫鼬。所以我希望我的问题不会被标记为重复。
我们的 repo 恰好有一个与分支名称同名的标签。因此,当我尝试从该分支中拉取时,git 感到困惑并从标记中拉出,就像这样。我必须先删除那个标签才能让我的 git pull 工作。
那么我如何告诉 git pull from branch 而不是 tag 呢?
cc-backend ? git pull origin 0.9.0-rc6-patch1
From 10.0.0.28:webcc/cc-backend
* tag 0.9.0-rc6-patch1 -> FETCH_HEAD
Already up to date.
/* I have to delete that tag and git pull again to get the result I want */
cc-backend ? git pull origin 0.9.0-rc6-patch1
From 10.0.0.28:webcc/cc-backend
* branch 0.9.0-rc6-patch1 -> FETCH_HEAD
Updating 9d7e9dc3..2bf3f96a
Fast-forward
app/Services/GroupSeat/Seat.php | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
Run Code Online (Sandbox Code Playgroud) 假设我想查看expressjs代码,但是当我单击var express = require('express')“转到定义”时,vscode将向我显示打字稿版本,而不是node_mudules.
我在这里搜索相关问题,例如如何在 VS Code 中查看原始 javscript 库源代码而不是 typescript 版本?或 github 中的相关问题,例如支持位于“node_modules”中的代码的“转到定义”。但我仍然不知道这是否可以做到。该问题已于 2016 年关闭,有人说
这是打字稿大脑的问题
这到底是什么意思?到底能不能做?
- - - 更新 - - -
发现它实际上是重复的,就像这样How can I go toimplementation of Something 而不是 TypeScript 声明?
Go to source definition是我需要的。
我可以重用NSPredicate来替换新的变量吗?我的NSPredicate相当简单:
NSPredicate *userPredicate = [NSPredicate predicateWithFormat:@"id == %@",userID];
Run Code Online (Sandbox Code Playgroud)
userID是在运行时生成的,具有不同的值,现在对于我需要创建NSPredicate的每个userID.那么我可以重用我的NSPredicate吗?
我已经使用vs docker 扩展来创建 docker 文件。但我不知道使用 docker-compose.debug.yml 调试我的代码的“正确”方法是什么,例如我如何设置我的环境。所以我可以按 F5 并且所有的魔法都会发生。
我确实找到了一种调试代码的方法。首先docker-compose -f docker-compose.debug.yml在终端运行。然后使用来自容器内节点开发:Visual Studio Code的 launch.json附加到我在 docker中的节点。
但我认为 Code 可能会提供一种更简单的方法来简化调试过程。
我需要一个简单的 debounce 函数,立即数总是为真。
没有求助于 lodash 并在有人可以解释 Javascript 中的“去抖动”功能的帮助下,我实现了它如下,
function debounce(func, wait) {
var timeout;
return function() {
if (!timeout) func.apply(this, arguments);
clearTimeout(timeout);
timeout = setTimeout(()=>{timeout = null}, wait);
};
};
Run Code Online (Sandbox Code Playgroud)
它按预期工作,直到我需要去抖动 axios 请求。假设我有一个去抖动的 axios 方法,我希望调用方法像往常一样,这意味着我的去抖动 axios 方法应该返回我相信的承诺。
//the calling method should not change
debounced_axios().then(res => {...}).catch(err => {...})
Run Code Online (Sandbox Code Playgroud)
原始 debounce 实现的本质是在等待时间范围内只运行一次func ,但是我如何在等待时间范围内只返回一个承诺?
然后我想出了以下解决方案
all_timers = {}
function debounce_axios(input, wait) {
return new Promise((resolve, reject) => {
let timer = all_timers.[input] //check if it is …Run Code Online (Sandbox Code Playgroud) 我需要向多服务器发送请求,以查看哪个服务器将响应我的请求,如果其中任何一个响应,我将进一步与该服务器交互。最简单的方法是按顺序发送我的请求,像这样
async function probing(servers) {
for (const server of servers) {
const result = await fetch(server)
if (result.status == 200) {
return result
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我希望加快探测过程,所以我将代码更改为
async function probing(servers) {
results = await Promise.all(
servers.map(async server => {
return await fetch(server)
})
)
for (const result of results) {
if (result.status == 200) return result
}
}
Run Code Online (Sandbox Code Playgroud)
但我仍然需要等待所有的承诺完成。我真正需要的是,如果其中一个有决心,我就从我的探测中返回()
那有可能吗?
- - 更新 - -
感谢评论promise.any是解决方案(单线箭头函数可以进一步简化如下)
result = await Promise.any(
servers.map(server => fetch(server))
)
Run Code Online (Sandbox Code Playgroud)
---- 更新 …
我认为问号中的public init?(coder aDecoder: NSCoder)意思不是可选的。另外,当我覆盖它时,我发现根本不需要写问号。
那到底是什么意思呢?
-更新-
下面的评论帮助我弄清楚了它被称为“失败的初始化程序”,另一个使该概念更易于理解的示例是UIFont的自发init,因为UIFont可能不存在。
public /*not inherited*/ init?(name fontName: String, size fontSize: CGFloat)
Run Code Online (Sandbox Code Playgroud) 我原以为Unicode61 Tokenizer可以支持 CJK --中文 日语 韩语\n我验证我的 sqlite 支持 fts5
\n\nsqlite> pragma compile_options;\nBUG_COMPATIBLE_20160819\nCOMPILER=clang-9.0.0\nDEFAULT_CACHE_SIZE=2000\nDEFAULT_CKPTFULLFSYNC\nDEFAULT_JOURNAL_SIZE_LIMIT=32768\nDEFAULT_PAGE_SIZE=4096\nDEFAULT_SYNCHRONOUS=2\nDEFAULT_WAL_SYNCHRONOUS=1\nENABLE_API_ARMOR\nENABLE_COLUMN_METADATA\nENABLE_DBSTAT_VTAB\nENABLE_FTS3\nENABLE_FTS3_PARENTHESIS\nENABLE_FTS3_TOKENIZER\nENABLE_FTS4\nENABLE_FTS5\nRun Code Online (Sandbox Code Playgroud)\n\n但令我惊讶的是它根本找不到任何中日韩单词。这是为什么 ?
\n\nsqlite> CREATE VIRTUAL TABLE ft5_test USING fts5(content, tokenize = \'porter unicode61 remove_diacritics 1\');\nsqlite> INSERT INTO ft5_test values(\'\xe4\xb8\xba\xe4\xbb\x80\xe4\xb9\x88\xe4\xb8\x8d\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xad\xe6\x96\x87 fts5 does not seem to work for chinese\');\nsqlite> select * from ft5_test where ft5_test = \'\xe4\xb8\xad\xe6\x96\x87\';\nsqlite>\nsqlite> select * from ft5_test where ft5_test = \'Chinese\';\n\xe4\xb8\xba\xe4\xbb\x80\xe4\xb9\x88\xe4\xb8\x8d\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xad\xe6\x96\x87 fts5 does not seem to work for chinese\nRun Code Online (Sandbox Code Playgroud)\n\n- - - - - - - 更新 - …
我们目前使用 pm2 来保持 Nodejs 进程的活动,我们不使用集群模式(以及相关的负载平衡功能)。
正如laravel 建议的那样,我们的 php 团队使用supervisord 来管理他们的 php 进程。现在我们正在研究使用supervisord 来管理我们的nodejs 进程的可能性。我们主要需要流程管理器做两件事:保持流程处于活动状态并在流程崩溃和重新启动时记录事件。
在保持进程存活方面,我确实发现 pm2 和supervisord 有一些相似之处。但是pm2有更多的重启策略,例如pm2有一个CRON时间,而supervisord没有(如果我错了请纠正我)。如果没有 cron time 功能,我们将不得不求助于 cronjob,因此这是一个很好的功能,但不是必须的。
Supervisord有进程组和优先级顺序,根据我使用节点的经验,我没有找到很多用例。
所以对我们来说,这似乎是可行的,但是我们没有足够的supervisord经验,我们担心我们可能会在这里错过一些东西,特别是像你这样的大佬一开始就不应该这样做!以前有人这样做过吗?
顺便说一句,我的问题与在虚拟环境中使用 node.js pm2 运行 python 脚本相反
- - 更新 - -
最近我又被问到这个问题。
这对我来说不是优先事项,所以我没有进一步调查这个问题。但是因为我在 pm2 中没有使用集群,所以我绝对认为这是可行的,请查看这篇文章使用supervisor永远运行NodeJs应用程序,supervisor conf文件应该如下所示,
[program:start_script]
command=/var/www/nodeapp/start.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/start.err.log
stdout_logfile=/var/log/start.out.log
Run Code Online (Sandbox Code Playgroud) node.js ×4
javascript ×2
promise ×2
async-await ×1
axios ×1
cocoa ×1
core-data ×1
debouncing ×1
docker ×1
es6-promise ×1
fts5 ×1
git ×1
git-pull ×1
mongodb ×1
mongoose ×1
node-modules ×1
nscoder ×1
nspredicate ×1
pm2 ×1
polyfills ×1
sqlite ×1
supervisord ×1
swift ×1
typescript ×1
uiview ×1
unicode ×1