小编use*_*780的帖子

Mongodb 用 $cond 和 $each 聚合 $push

我试图在聚合期间$cond有条件地将$push多个整数放入一个数字数组中,$group但没有成功。这是我的代码:

Item.aggregate(
    [
      {
        $group: {
          _id: "$_id",
          numbers: {
            $push: {
              $cond: { 
                if: { $gt: [ "$price.percent", 70 ] }, 
                then: { $each: [10,25,50,70] },
                else: null,
              }
            }
          }
        }
      },
    ]
  )
  ...
Run Code Online (Sandbox Code Playgroud)

是 Mongo DB 现在没有为此设置,还是我认为这一切都错了?

mongoose mongodb node.js express mongodb-query

6
推荐指数
2
解决办法
8967
查看次数

createReadStream end 在数据处理完成之前触发

我正在尝试执行以下操作:

  1. 逐行流式传输 csv 文件。
  2. 修改每一行中包含的数据。
  3. 流式传输和处理所有行后,完成并继续下一个任务。

问题是.on("end").on("data")处理完每一行之前触发。处理完所有行.on("end")后如何触发.on("data")

下面是我正在谈论的一个简单的例子:

import parse from 'csv-parse'; 

var parser = parse({});

fs.createReadStream(this.upload.location)
.pipe(parser)
.on("data", line => {
  var num = Math.floor((Math.random() * 100) + 1);
  num = num % 3;
  num = num * 1000;
  setTimeout( () => { 
    console.log('data process complete');
  }, num);
})
.on("end", () => {
   console.log('Done: parseFile');
   next(null);
});
Run Code Online (Sandbox Code Playgroud)

提前致谢。

javascript csv stream fs node.js

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

在Node.js中使用RabbitMQ进行标头交换示例

我到处都在寻找在Node.js中headers exchange使用RabbitMQ的示例。如果有人能指出我正确的方向,那就太好了。这是我到目前为止的内容:

发布者方法(创建发布者)

RabbitMQ.prototype.publisher = function(exchange, type) {
 console.log('New publisher, exchange: '+exchange+', type: '+type);
 amqp.then(function(conn) {
    conn.createConfirmChannel().then(function(ch) {
        publishers[exchange] = {};
        publishers[exchange].assert = ch.assertExchange(exchange, type, {durable: true});
        publishers[exchange].ch = ch;
    });
 },function(err){
    console.error("[AMQP]", err.message);
    return setTimeout(function(){
        self.connect(URI);
    }, 1000);
 }).then(null, console.log);
};
Run Code Online (Sandbox Code Playgroud)

发布方法

RabbitMQ.prototype.publish = function(exchange, routingKey, content, headers) {
 try {    
    publishers[exchange].assert.then(function(){
        publishers[exchange].ch.publish(exchange, routingKey, new Buffer(content), { persistent: true, headers: headers }, function(err, ok) {
            if (err) {
                console.error("[AMQP] publish", err);
                offlinePubQueue.push([exchange, routingKey, …
Run Code Online (Sandbox Code Playgroud)

javascript amqp rabbitmq node.js express

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

使Dockerfile VOLUME表现得像docker-compose卷

我正在尝试设置a Dockerfile将主机目录安装到我指定的docker容器目录(因此代码更改将立即反映出来)。当我运行docker run -p 3000:3000 -d -v ~/Projects/test:/app test文件时,将挂载文件,并且一切正常。但是,一旦关闭容器,文件更改就不会保留在容器中,就像我volumesdocker-compose文件中运行时所做的更改一样。

这是我的Dockerfile:

FROM node:onbuild
EXPOSE 3000
RUN mkdir /app
VOLUME ./:/app/
WORKDIR /app/
RUN npm install -g nodemon
CMD nodemon server.js
Run Code Online (Sandbox Code Playgroud)

这是一个工作的docker-compose.yml:

test:
  build: ./
  volumes:
    - ./:/app/
  working_dir: /app/
  command: npm start 
  ports:
    - "3000:3000"
Run Code Online (Sandbox Code Playgroud)

javascript node.js docker dockerfile docker-compose

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