GVKun编程网logo

mongoose独特:true无效(mongoose.js)

13

以上就是给各位分享mongoose独特:true无效,其中也会对mongoose.js进行解释,同时本文还将给你拓展2022-09-30:以下go语言代码输出什么?A:truetruefalsetru

以上就是给各位分享mongoose独特:true无效,其中也会对mongoose.js进行解释,同时本文还将给你拓展2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true、2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。 package main import “f、Apache下commons-lang工具包下BooleanUtils类的xor(true, true, true)结果为false,为什么?、egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

mongoose独特:true无效(mongoose.js)

mongoose独特:true无效(mongoose.js)

为什么在此脚本中猫鼬唯一不起作用

  var child_process = require(''child_process'');  // Load required packages  child_process.exec("mongo test --eval ''db.users.drop();''", function(err){  var mongoose = require(''mongoose'');  console.log(mongoose.version);  mongoose.connect(''mongodb://localhost:27017/test'');  // Define our user schema  var json = {};  json.phone = { type: String, required: true, unique: true};  var UserSchema = new mongoose.Schema(json);  var Model = mongoose.model(''user'', UserSchema);  var jp = new Model({ phone: "123456"});  mongoose.connection.on(''open'', function(){    console.log(jp);    jp.save(function(err){      console.log(err);      var jp2 = new Model({ phone: "123456"});      console.log(jp2);      jp2.save(function(err){        console.log(err);        process.exit();      });    })  });});

我很困惑,结果就像

3.8.20{ phone: ''123456'', _id: 54856cceb5b40f7a88fcc2af }null{ phone: ''123456'', _id: 54856cceb5b40f7a88fcc2b0 }null

谢谢您的帮助。

答案1

小编典典

发生这种情况是因为您要在mongoose完成索引创建之前保存重复的文档。在您的应用启动后,Mongoose可以随时随地创建索引。

因此,为确保仅在创建索引后才保存文档,您必须侦听index模型事件。例如:

Model.on(''index'', function (error) {  console.log(jp);  jp.save(function(err){    console.log(err);    var jp2 = new Model({ phone: "123456"});    console.log(jp2);    jp2.save(function(err){      console.log(err);      process.exit();    });  })});

现在,当您尝试保存第二个文档(重复的文档)时,MongoDB将引发错误,因为您的save调用将在创建索引后立即运行。

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true true false false;D: true true false true true。

package main

func main() {
    var (
        a int         = 0
        b int64       = 0
        c interface{} = int(0)
        d interface{} = int64(0)
    )

    println(c == 0)
    println(c == a)
    println(c == b)
    println(d == b)
    println(d == 0)
}

答案选A。第3个为false,是因为c是int类型,b是int64类型。第5个为false,那是因为d是int64类型,0是int类型,这个0很容易被当成无类型,会误认为是true。从这里可以看出,做比较的时候,是没有无类型的概念的。

在这里插入图片描述

2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。 package main import “f

2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。 package main import “f

2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。

package main

import "fmt"

func main() {
    s := []string{"A", "B", "C"}

    t := s[:1]
    fmt.Println(&s[0] == &t[0])

    u := append(s[:1], s[2:]...)
    fmt.Println(&s[0] == &u[0])
}

答案选C。这里的关键点是 append(s[:1], s[2:]...) 会不会导致扩容。s[:1] 相当于 s[:1:3],即容量是也是 3,因此 append 一个元素(s[2:]...)并不会导致扩容,因此第一个元素还是原来 s[0] 的元素。 在这里插入图片描述

Apache下commons-lang工具包下BooleanUtils类的xor(true, true, true)结果为false,为什么?

Apache下commons-lang工具包下BooleanUtils类的xor(true, true, true)结果为false,为什么?

如何解决Apache下commons-lang工具包下BooleanUtils类的xor(true, true, true)结果为false,为什么??

Apache下commons-lang工具包下BooleanUtils类的xor(true,true,true)结果为false,但是System.out.println(true ^ true ^ true) 的结果是true。为什么?

public class Test {
    public static void main(String[] args) {
        System.out.println(org.apache.commons.lang.BooleanUtils.xor(new boolean[]{true,true}));
        System.out.println(org.apache.commons.lang3.BooleanUtils.xor(new boolean[]{true,true}));
        System.out.println(true ^ true ^ true);
    }
}
/*
    result:
    false
    false
    true
*/

解决方法

您看到此行为的最可能原因是您使用的是旧版本的 commons-lang (

较新版本的行为 the same as Java(即从左到右一次计算一个异或)。

然而,旧版本使用 different approach:只有当整个数组中恰好有一个真值时,它们才返回真值。

此行为被认为不正确(请参阅 LANG-921)并已修复。

egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法

egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更
快。MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询
优化技巧

user.js
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel

查找user表的索引

db.user.getIndexes()

clipboard.png

增加字段sn的索引

    sn:{
        type:String,
        index:true
    },
user.js
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
        index:true
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel

查找索引

clipboard.png

扩展Mongoose Model的静态方法

user.js
增加UserSchema.statics.findBySn
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
        index:true
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

UserSchema.statics.findBySn=function(sn,cb){
    this.find({"sn":sn},function(err,docs){
        cb(err,docs)
    })
}

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel
index.js

先增加sn=123456的数据

var user = new UserModel({
    name:''标题3'',
    age:20,
    sn:"123456"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

使用UserSchema.statics.findBySn方法

var UserModel = require(''./user.js'');
//静态方法
UserModel.findBySn(''123456'', function (err, doc) {
    if (err) {
        console.log(err);
        return;
    }
    console.log(doc)
})

运行

clipboard.png

我们今天的关于mongoose独特:true无效mongoose.js的分享就到这里,谢谢您的阅读,如果想了解更多关于2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true、2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。 package main import “f、Apache下commons-lang工具包下BooleanUtils类的xor(true, true, true)结果为false,为什么?、egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法的相关信息,可以在本站进行搜索。

本文标签: