标签: mongoose-schema

猫鼬创建返回 __v

我正在尝试使用 mongoose 制作一个 REST API,我想隐藏 __v 属性,并且通过执行以下操作成功将其隐藏在 find 和 findById 上:

Contact.find({}, '-__v', function(error, list) { });

Contact.findById(req.params.id, '-__v', function(error, item) { });
Run Code Online (Sandbox Code Playgroud)

但是当我使用创建方法时

Contact.create(req.body, function(error, item) { });
Run Code Online (Sandbox Code Playgroud)

它返回给我添加了 __v 属性的项目。

我还尝试了在这样的模式上使用 select: false 的方法

__v: {
  type: Number,
  select: false
}
Run Code Online (Sandbox Code Playgroud)

此方法也执行相同的操作,它从 find 和 findById 中隐藏 __v 属性,但也不从 crate 方法返回的对象中隐藏它。

mongoose mongodb node.js mongoose-schema

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

在 Mongoose 模式中添加带有破折号字符的字段

-我想向其中包含破折号字符 ( ) 的架构添加一个字段。猫鼬不允许这样做。这可能吗?

var mySchema = new Schema({
  family-name: {
    type: String, 
    default: ''
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js mongoose-schema

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

猫鼬嵌套模型

不确定这是否会被视为重复,但我已经四处搜索并实现了与我在网上找到的类似查询,但似乎无法让我的嵌套引用起作用。我只是测试以了解用于填充嵌套引用和嵌套文档的猫鼬语法,如下所述:猫鼬嵌套模式与嵌套模型

但是,我一定错过了一些东西,因为它似乎可以工作,但返回一个空的嵌套引用数组。我知道我的查询应该返回嵌套引用的两个结果。

  • 我忽略了什么或做错了什么?
  • 如果我想使用嵌套文档,我将如何以不同的方式运行查询?

数据:

结果收集:

{
    "_id" : ObjectId("5a4dcbe4ab9a793d888c9396"),
    "event_id" : ObjectId("5a482302a469a068edc004e3"),
    "event_name" : "Sample Event",
    "score" : "3-2",
    "winner" : "player1"
},

{
    "_id" : ObjectId("5a59791379cc1c321c1918f0"),
    "event_id" : ObjectId("5a482302a469a068edc004e3"),
    "event_name" : "Sample Event",
    "score" : "2-1",
    "winner" : "player2"
}
Run Code Online (Sandbox Code Playgroud)

活动合集:

{
    "_id" : ObjectId("5a482302a469a068edc004e3"),
    "type" : "Tournament",
    "name" : "Sample Event"
}
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

var mongoose = require("mongoose");
mongoose.connect("MongoDB://localhost/devDB");

var ResultSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    event_id: {type: mongoose.Schema.Types.ObjectId, ref: "EventModel"},
    event_name: String,
    score: String,
    winner: String
}); …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js mongoose-populate mongoose-schema

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

如何在 GraphQLObjectType 中定义对象字段?

因此,我尝试在 MongoDB 中创建一个 User 集合,并使用 GraphQL 和 mongoose 对其进行查询。

我已经在路径“pathToServer\server\models\user.js”中创建了用户架构,它看起来像这样:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
    name: {
        firstName: String,
        lastName: String,
    },
    email: String,
    password: String,
})

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

我创建了一个 GraphQL 类型,目前我将它放在路径“pathToServer\server\schema\types\user.js”中,它看起来像这样:

const graphql = require('graphql');

const {GraphQLObjectType, GraphQLList, GraphQLInt, GraphQLID, GraphQLString, GraphQLSchema, GraphQLNonNull} = graphql;

const UserType = new GraphQLObjectType({
    name: 'User',
    fields: () => ({
        id: {type: GraphQLID},
        email: {type: GraphQLString},
        name: new GraphQLObjectType({
            firstName: {type: GraphQLString},
            lastName: …
Run Code Online (Sandbox Code Playgroud)

mongoose mongoose-schema graphql graphql-js express-graphql

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

如何使用 mongoose 在 Mongodb 数组中只允许某些字符串值?

我正在使用Node.js和创建服务器端应用程序Mongodb。我正在使用Mongoose包访问MongoDB数据库。而且,我希望我的 Mongoose 数组只允许将某些值推入其中。例如。如果我有我的配置mongoose阵列状支撑值adminuser并且course,有没有什么办法猫鼬禁止以外的值有任何的推动adminuser以及course入阵?

mongoose mongodb node.js mongoose-schema

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

Mongoose 在发送到前端之前删除 _id 和 __v

当我通过 mongoose 从 mongo 获取数据时......

      const allAssets = await assets
        .find({ company })
        .sort([['createdAt', -1]])
        .exec();
      res.status(200).json({ assets: allAssets });
Run Code Online (Sandbox Code Playgroud)

我总是得到 _id 和 __v 但我不想将它们发送到前端,有没有办法可以轻松地说我不想要这些值或在发送它们之前删除它们?

    {
      "indistructable": true,
      "_id": "5e345c2dc84be8995a5b4cf2",
      "baseUri": "https://api.website.com/nameco8/",
      "company": "jnameco8",
      "description": "asset",
      "image": "myimage.png",
      "name": "jim",
      "supply": 100,
      "createdAt": "2020-01-31T16:56:13.816Z",
      "updatedAt": "2020-01-31T16:56:13.816Z",
      "__v": 0
    },
Run Code Online (Sandbox Code Playgroud)

我尝试过添加

    __v: {type: Number, select: false},
    _id: { type: mongoose.Schema.Types.ObjectId, select: false },
Run Code Online (Sandbox Code Playgroud)

到我的架构,但是当保存到架构时,我收到错误 "document must have an _id before saving"

mongoose mongodb mongoose-schema

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

打字稿和猫鼬:“文档”类型上不存在属性“x”

这是我与 TypeScript 一起使用的 Mongoose 模型:

import mongoose, { Schema } from "mongoose";

const userSchema: Schema = new Schema(
  {
    email: {
      type: String,
      required: true,
      unique: true,
      lowercase: true,
    },
    name: {
      type: String,
      maxlength: 50,
    },
    ...
    ...
  }
);

userSchema.method({
  transform() {
    const transformed = {};
    const fields = ["id", "name", "email", "createdAt", "role"];

    fields.forEach((field) => {
      transformed[field] = this[field];
    });
    return transformed;
  },
});

userSchema.statics = {
  roles,
  checkDuplicateEmailError(err: any) {
    if (err.code === 11000) {
      var …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose typescript mongoose-schema

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

Mongo Compass 中某些字段的路径冲突

我有一个作者和书籍及其地址的架构:

const addr = {
  building: String,
  block: String,
  city: String,
  pin: Number
}

const authorSchema = mongoose.Schema({
name: String,
books: [String],
address: addr
});

module.exports = mongoose.model('Author', authorSchema);

Run Code Online (Sandbox Code Playgroud)

现在,当我尝试备份为 JSON 或 CSV 时,出现错误

Path collision at address.building remaining portion building
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongoose-schema

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

如何使用猫鼬复制字段数据并在同一文档的另一个字段中使用它?

我的 User Scehma 中有两个字段,购物车和订单都是数组。

领域

我想将购物车数组中的所有项目复制到订单数组,然后删除/删除购物车数组中的所有项目。我该怎么办?

mongoose mongodb mongodb-query mongoose-schema

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

如何仅查看猫鼬中的值的第一个字母来查找所有文档

我想按首字母查找所有文档。

情况是当我在mysql中查询时我可以做 WHERE Stores LIKE 'a%'

the result would be all data with the first letter a.
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 如何使同样的query使用mongoose
  • 怎么样case-sensitive eg: (a,A)。这将是相同的查询与否?
  • 是否有必要lowercase_field为这种情况创建?

mongoose mongodb mongodb-query mongoose-populate mongoose-schema

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