尝试将Mongoose模型拆分为sud文档

ckx4rj1h  于 2023-05-13  发布在  Go
关注(0)|答案(1)|浏览(109)

我确信这是一个语法问题。我有一个 Mongoose 模型,它的一部分看起来像这样:

SMS_Data: {
        _id: false,
        SMS_User: [{
            Username: {
                type: String
            },
            Password: {
                type: String
            }
        }]
    }

这工作正常,但我试图将内容拆分为子文档。所以我创建了一个SMS_User. js模型,看起来像这样:

const mongoose = require('mongoose');

const sms_user = mongoose.Schema({
    SMS_User: {
        Username: {
            type: String
        },
        Password: {
            type: String
        }
    }
})

module.exports = sms_user;

我需要它到主模型中使用:const sms_user = require('./SMS_User');
并尝试将主模型更改为如下所示:

SMS_Data: {
        _id: false,
        SMS_User: [sms_user]
    }

但这不管用。而不是选择我所期望的用户,根据用户名和密码。但是当我从我的登录控制器使用它时:

const user = await my_model.findOne({ 'SMS_Data.SMS_User.Username': userId, 'SMS_Data.SMS_User.Password': userPw });

它只选择集合中的第一条记录,而不是当我使用模型的非嵌套版本时选择正确的记录。我认为子模型的嵌套是错误的。
就像我说的,这可能是非常明显的,但我只是不知道我错在哪里。
先谢谢你了。

zzzyeukh

zzzyeukh1#

你分解模式的方式是错误的,因为你增加了一个额外的嵌套级别(即'SMS_Data.SMS_User.SMS_User.Username'等)。
您需要从sms_user架构中删除SMS_User

const sms_user = mongoose.Schema({
    Username: {
      type: String
    },
    Password: {
      type: String
    }
  })

  const parentSchema = mongoose.Schema({
    //other fields
    SMS_Data: {
      _id: false,
      SMS_User: [sms_user]
    }
  })

相关问题