小编use*_*624的帖子

在mongoose中使用addtoset命令添加多个相同的文档

我的架构是

var UserQuizSchema = mongoose.Schema({   
        uid:{type:ObjectId,required: true,index:true},
        answer:[{content:String, qid:ObjectId ,time:Date }],        
});
Run Code Online (Sandbox Code Playgroud)

在此模式中,'uid'表示用户标识符,而'answer'数组存储学生已回答的答案.在每个答案中,qid与问题ID相关,"内容"是学生的真实答案,"时间"是答案的修改时间戳.

在这里,我使用mongoose将新答案插入到数组中

function updateAnswer(uid,question_id,answer,callback){

    var options = { new: false };   
    var quiz_id = mongoose.Types.ObjectId(quiz_id);
    var qid = mongoose.Types.ObjectId(question_id);
    UserQuizModel.findOneAndUpdate({'uid':uid},{'$addToSet':{'answer':{'qid':qid, 'content':answer} } },options,function(err,ref){
        if(err) {
            console.log('update '.red,err);
            callback(err, null);
        }else{
            console.log('update '.green+ref);                 
            callback(null,ref);
        }
    })
} 
Run Code Online (Sandbox Code Playgroud)

在常识中,通过使用addToSet命令,答案数组中的元素应该是唯一的,但在我的示例中,答案数组可能只有多个相同的嵌入文档,除了每个嵌入的文档都有一个唯一的OjbectId _id

 answer:
  [ { qid: 5175aecf0e5b061414000001, _id: 518a5e5895fc9ddc1e000003 },
    { qid: 5175aecf0e5b061414000001, _id: 518a5e5f95fc9ddc1e000004 } ] }
Run Code Online (Sandbox Code Playgroud)

你看到两个嵌入文件的qid是相同的,但_id是不同的.

为什么还有一个_id,我不把它的架构设计?

mongoose mongodb

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

即使使用$ addToSet,mongodb中的数组中的密钥重复

我有一个像这个架构的架构

{
    'cr':[
              { key: 'key1', value:['value1','value2','value3'] },
              { key: 'key2', value:['value4','value5','value6'] }
         ]
}

function addCriteriaKey(id,key,callback){
    var options = { new: false ,select:'_id'};
        Model.update({'uid':id},{'$addToSet':{'cr':{'key':key}}},options,function(err,data){
           if(err) callback(err,null);
           else callback(null,data);
        })  
}

function addCriterialValueToKey(id,key,value,callback){
    var options = { new: false ,select:'_id'};
        Model.update({'uid':id,'cr.key':key},{'$addToSet':{'cr.$.val':value}},options,function(err,data){
            if(err) callback(err,null);
            else callback(null,data);
        })  
}
Run Code Online (Sandbox Code Playgroud)

所以这是我添加一个键并添加一个值的两种方法,它们都可以工作,但数据库有一个现有的键,但我添加了一个额外的键,$ addToSet不再工作了.

例如,当我这样做时:

1. addCriteriaKey('id','abc',function(err,data){})

2. addCriterialValueToKey('id','abc','111',function(err,data){})

数据变得像

{
    'cr':[
              { key: 'abc', value:['111'] }              
         ]
}
Run Code Online (Sandbox Code Playgroud)

但是当我再次添加键'abc'时.1. addCriteriaKey('id','abc',function(err,data){})

数据变得像

{
    'cr':[
              { key: 'abc', value:['111'] },
              { key: 'abc' }                
         ]
} …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb

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

由于tcp-backlog,Redis无法启动

我正在使用osx并尝试通过brew安装redis

brew install redis
==> Downloading http://download.redis.io/releases/redis-2.8.17.tar.gz
Already downloaded: /Library/Caches/Homebrew/redis-2.8.17.tar.gz
==> make -C /private/tmp/redis-WEL8AT/redis-2.8.17/src CC=clang
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf
==> Summary
Run Code Online (Sandbox Code Playgroud)

最后我安装了redis,但是当我以它的方式运行它时

redis-server /usr/local/etc/redis.conf
Run Code Online (Sandbox Code Playgroud)

有错误信息,

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 54
>>> 'tcp-backlog 511'
Bad directive or wrong number of arguments
Run Code Online (Sandbox Code Playgroud)

我从Redis tcp-backlog …

macos redis

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

以角度更改代码镜像的高度和宽度

我正在使用带有最新 ngx-codemirror 的 angular 7。

<ngx-codemirror [(ngModel)]="sql_input"  [options]="{lineNumbers: true,theme: 'material',mode: 'markdown'}"></ngx-codemirror>
Run Code Online (Sandbox Code Playgroud)

最终的外观如下所示,这对我来说太大了。只是想知道如何将其调整为在高度和宽度上更小。

在此处输入图片说明

css codemirror angular

3
推荐指数
2
解决办法
1180
查看次数

在mongoose中,如何选择数组属性中的字段

在Mongoose中,我有这样的架构

var schema= mongoose.Schema({
         name:String,
         age:String
         likes: [{ type:String, price:String}]                       
});
Run Code Online (Sandbox Code Playgroud)

正如猫鼬,该选项Model.find(条件,[田],[选项],[回调])为我们提供了一个选择,选择我们需要的字段.但是在我的架构中,有一个数组属性'likes',在查询中,我只想选择一个属性类型而不是全部属性,我该如何进行此查询?

mongoose

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

使用amazon ec2并使用实例绑定IP,但无法正常工作

我是亚马逊服务的新手,我在亚马逊EC2上安装了node.js和mongodb,它都在服务器端工作,但是,当我想测试它时,我用IP地址绑定了服务器实例,但访问服务器没有成功,我想知道它有什么问题

amazon-ec2

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

TypeError:OrbitControls不是angular2中的构造函数

我正在使用three.js处理angular2.

这是我的角度cli的配置.

在package.json中:

"three": "^0.81.2",
"three-stl-loader": "^1.0.4",
Run Code Online (Sandbox Code Playgroud)

在angular.cli.json中:

    "../node_modules/three/build/three.min.js",
    "../node_modules/three/examples/js/Detector.js",
    "../node_modules/three/examples/js/controls/OrbitControls.js",
    "../node_modules/three/examples/js/controls/TrackballControls.js",
    "../node_modules/three/examples/js/loaders/STLLoader.js",
Run Code Online (Sandbox Code Playgroud)

在组件文件中,我加载了THREE和OrbitControls:

import * as THREE from 'three';    
import PerspectiveCamera = THREE.PerspectiveCamera;
import OrbitControls = THREE.OrbitControls;
Run Code Online (Sandbox Code Playgroud)

应用程序运行时,控制台会显示以下消息:

'THREE.WebGLRenderer 81
three.js:41149 THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.
three.js:41158 THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.
'
Run Code Online (Sandbox Code Playgroud)

所以显然有三个.js被加载,但为什么无法找到OrbitControls?

three.js angular

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

保持 angular cli 开发应用程序在服务器的后台运行?

我正在远程服务器上运行 angular cli 开发,是否可以在守护程序模式下运行此开发应用程序?就像我们在forever.js中使用的一样

angular-cli angular

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

SyntaxError:运行python kafka代码时语法无效

我在 python 3.7 中运行代码,该库由

pip3 install kafka
Run Code Online (Sandbox Code Playgroud)

这是代码

import random
import time, calendar
from random import randint
from kafka import KafkaProducer
from kafka import errors
from json import dumps
from time import sleep


def write_data(producer):
    data_cnt = 20000
    order_id = calendar.timegm(time.gmtime())
    max_price = 100000
    topic = "payment_msg"

    for i in range(data_cnt):
        ts = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        rd = random.random()
        order_id += 1
        pay_amount = max_price * rd
        pay_platform = 0 if random.random() < 0.9 else 1
        province_id = randint(0, 6) …
Run Code Online (Sandbox Code Playgroud)

python-3.x apache-kafka

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

Cannot deserialize instance of `java.lang.String` in node.js server to kafka connect connection

I use curl to submit to our Kafka Connect service a JSON request message with information about the connector, it is working successfully.

$ curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"database.server.name\": \"dbserver1\", \"database.whitelist\": \"inventory\", \"database.history.kafka.bootstrap.servers\": \"kafka:9092\", \"database.history.kafka.topic\": \"dbhistory.inventory\" } }'
Run Code Online (Sandbox Code Playgroud)

now I am using node.js server to send data to kafka connect server.

  var body = { …
Run Code Online (Sandbox Code Playgroud)

java node.js apache-kafka-connect

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