小编Akr*_*ion的帖子

使用MongoDB Compass进行连接

我正在尝试使用MongoDB Compass查看集合的内容。我已经设置了用户名/密码验证。我可以成功登录,但是在收藏集中看不到任何文档。相反,我看到了错误:

加载导航时发生错误:命令hostInfo需要验证。

以下是用户具有的角色列表:

"roles": [{
    "role": "readWrite",
    "db": "moviesDB"
  },
  {
    "role": "dbAdmin",
    "db": "moviesDB"
  },
  {
    "role": "dbOwner",
    "db": "moviesDB"
  },
  {
    "role": "clusterMonitor",
    "db": "admin"
  },
  {
    "role": "dbAdmin",
    "db": "moviesDB"
  }
]
Run Code Online (Sandbox Code Playgroud)

我可以使用mongo shell和node.js驱动程序成功查询集合,但不能通过Compass。如果有人可以告诉我我在做什么错,我将不胜感激。提前致谢!

database-connection database-administration mongodb mongodb-compass

8
推荐指数
2
解决办法
5159
查看次数

Elasticsearch:搜索布尔字段

我在 Elasticsearch 集群中有几个文档,其中有一个isInFight包含布尔值的字段。映射已正确设置(已仔细检查过)为布尔值。

当我运行搜索时:

 curl -XGET localhost:9200/default/_search --data '{"query": {"term": {"isInFight": true}}}'
Run Code Online (Sandbox Code Playgroud)

I get documents returned with the field being true and false. Changing the value in my search query to false no documents are returned at all.

To me this looks like the term query checked for the field being present or not rather then for it's value. Everything I found on the internet suggests that this query is the way to go though.

Am I missing …

elasticsearch

6
推荐指数
1
解决办法
4394
查看次数

gcloud 错误:ApiError:在新的 util.ApiError 处找不到

任何熟悉此 gcloud 异常的人:

ApiError:在 Object.parseHttpRespBody (/site/node_modules/gcloud/lib/common/util.js:206) 的新 util.ApiError (/site/node_modules/gcloud/lib/common/util.js:128:10) 处找不到:30) 在 Object.handleResp (/site/node_modules/gcloud/lib/common/util.js:146:18) 在 /site/node_modules/gcloud/lib/common/util.js:447:12 在 Request.onResponse [as _callback] (/site/node_modules/gcloud/node_modules/retry-request/index.js:120:7) 在 Request.self.callback (/site/node_modules/request/request.js:187:22) 在请求.emit (events.js:98:17) 在请求。(/site/node_modules/request/request.js:1044:10) 在 Request.emit (events.js:95:17) 在 IncomingMessage 处。(/site/node_modules/request/request.js:965:12) 在 IncomingMessage.emit (events.js:117:20) 在 _stream_read.js:944:16 在 process._tickDomainCallback (node.js:492:13)

它仅出现在生产中(当然)并且目前一致。它曾经定期出现,假设它是 gCloud 的一个小故障,因为它无法在本地重现。它与使用最简单的 gCloud lib 方法的代码部分相关,bucket.upload除了文件之外没有任何参数......这是执行此操作的当前函数:

function uploadToGoogleCloud(filePath, makePublic) {
  var gstorage = gcloud.storage({
    projectId: EXAMPLE_projectId,
    credentials: EXAMPLE_credentials,
  });

  var spBucket = Promise.promisifyAll(gstorage.bucket(EXAMPLE_bucket));

  return spBucket.uploadAsync(filePath).then(function(file) {
    if (makePublic) {
      var fileAsync = Promise.promisifyAll(file);
      return fileAsync.makePublicAsync().then(function() {
        return file; …
Run Code Online (Sandbox Code Playgroud)

upload buckets node.js google-cloud-platform gcloud-node

5
推荐指数
1
解决办法
2883
查看次数

如何使用猫鼬进行排序和限制

我用 Express 和 Mongoose 制作了一个评论应用程序。我有一个像下面这样的评论模型:

var mongoose = require('mongoose');

var ReviewSchema = mongoose.Schema({
    title: String,
    description: String,
    rating: Number
}, {
    timestamps: true
}
);

module.exports = mongoose.model('Review', ReviewSchema);
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我只得到如下所有评论列表。但现在我想得到一个包含 10 条最近评论和排序方式的列表(orderby 时间戳)。我怎样才能用猫鼬做到这一点?请帮我!我是 NodeJS 和 Mongodb 的新手。

exports.findAll = function(req, res) {
    console.log("Fetching Review...")
    // Retrieve and return all reviews from the database.
     Review.find(function(err, reviews){
        if(err) {
            console.log(err);
            res.status(500).send({message: "Some error occurred while retrieving Review."});
        } else {
            res.send(reviews);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

非常感谢

mongoose mongodb node.js express

5
推荐指数
2
解决办法
8771
查看次数

date-fns 中的年、月、日、小时和分钟倒计时

我正在使用DateFNS,我需要用它生成一个倒计时。distanceInWordsToNow在大约 3 年内输出但我需要像3 Years, 11 Months, 20 Days, 3 Hours, 2 Minutes. 如何使用 DateFNS 存档?

这是一个 CodePen 示例:https ://codepen.io/anon/pen/qGajJB

脚本

todaysDateMin: dateFns.distanceInWordsToNow(new Date(2022, 6, 2, 0, 0, 15), {addSuffix: true})
Run Code Online (Sandbox Code Playgroud)

javascript date countdown date-fns

5
推荐指数
3
解决办法
6144
查看次数

为什么.findByIdAndUpdate绕过mongoose中间件?

我在这里搜索过这个问题,但作为初学者,答案有点复杂,有点超出了我的理解范围。我正在使用 bcrypt 来散列密码,并设置了我的架构,以允许我使用中间件来查看用户是否在散列密码之前修改密码(无论是在初始创建还是更新时)。

在后路由上没有问题,但如果我使用补丁路由,就会出现问题,并且我的中间件不会运行。

有人可以帮助我以更简单的方式(即简单的英语)理解为什么它绕过猫鼬吗?:

const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true })
Run Code Online (Sandbox Code Playgroud)

但这是有效的:

const user = await User.findById(req.params.id)

updates.forEach((update) => user[update] = req.body[update])
await user.save()
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js

4
推荐指数
1
解决办法
1940
查看次数

如何使用递归,休息/扩展运算符和解构来将数组中的这些数字加倍?

我最近完成了一个JavaScript挑战,要求返回一个新数组,其中初始数组的所有值都加倍.

const numbers = [1, 2, 3];

function double() {

}
Run Code Online (Sandbox Code Playgroud)

除了我要包括一些ES6主题的解构和休息/传播运算符以及递归.好吧,我尽可能地完成了解决方案.这是我的解决方案:

const numbers = [1, 2, 3];

function double(arr){
 const doubledNumbers = [];
 for (var i = 0; i < arr.length; i ++){
  const dubba = arr[i];
  const bubba = dubba * 2;
   doubledNumbers.push(bubba);
 }
 return doubledNumbers;

}
Run Code Online (Sandbox Code Playgroud)

另一个要求是不使用任何数组助手方法(map,reuce等),所以我没有使用map(),而是使用for循环.但是,我无法绕过实现解构或休息/传播操作符,我认为我很清楚的概念,从不提及递归.

javascript recursion destructuring ecmascript-6

3
推荐指数
1
解决办法
180
查看次数

如果猫鼬命令 Model.insertMany 失败,是否会向数据库写入任何内容?

在 Model.insertMany 的文档中,它说当 options.ordered == true 时,该方法将在第一个错误时失败。

\n\n

https://mongoosejs.com/docs/api.html#model_Model.insertMany

\n\n
\n

[options.ordered \xc2\xabBoolean\xc2\xbb = true] 如果为 true,则在遇到第一个错误时快速失败。如果为 false,将插入它可以插入的所有文档并稍后报告错误。ordered = false 的 insertMany() 称为“无序”insertMany()。

\n
\n\n

可以:

\n\n
    \n
  • 出现错误并且没有向数据库写入任何文档。(我想要什么)
  • \n
\n\n

或者

\n\n
    \n
  • 写文件之前发生的错误,有错误,然后不再写文件?
  • \n
\n

mongoose mongodb node.js

1
推荐指数
1
解决办法
6677
查看次数