繁体   English   中英

文档中的 node.js mongoose 子字段

[英]node.js mongoose subfield in a document

我一直在使用 node.js 和 mongoose 一段时间,但我碰壁了。 我有一个包含 20,000 个文档的数据库,当我从 cli 搜索数据库时,它工作正常。

db.Tickets.find({ "Customers.Customer.CustomerID" : '123123123' })

这将返回 256 个结果

架构

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

// Define collection and schema for Ticket
var Ticket = new Schema({
    UserName: {
        type: String
    },
    Status: {
        type: String
    },
    TicketNumber: {
        type: Number
    },
    Name: {
        type: String
    },
    Description: {
        type: String
    },
    TicketTypeName: {
        type: String
    },
    DueDate: {
        type: Date
    },
    MapCollectDate : {
        type: Date
    },
    NumberofUsersAffected : {
        type: Number
    },
    DNNumber : {
        type : String
    },
    RevisionDate : {
        type : Date
    },
    CommercialImpact : {
        type: String
    },
    Customers :[{
        Customer: [{
            CustomerID: Number,
            CustomerName: String
        }]
    }],

虽然如果我使用 mongoose 在 node.js 中测试这个。 我无法让它返回任何东西

我有一个有效的通用搜索

Ticket.find(function (err, tickets){

但无法使特定搜索起作用。

我正在连接到 Mongo

const config = require('./db');
//const Course = require('./models/Course');
//const CourseRoute = require('./routes/CourseRoute');
const Ticket = require('./models/Ticket');
const TicketRoute = require('./routes/TicketRoute');

const PORT = 4000;

mongoose.connect(config.DB).then(
    () => {console.log('Connected to MongoDB') },
    err => { console.log('Error connecting to MongoDB' +err)
    });

日志输出

Your node js server is running on PORT: 4000
Connected to MongoDB
Connected to MySQL

我的路线终点

router.route('/').get(function (req, res) {
        Ticket.find({ "Customers.Customer.CustomerID" : global.auth_username }, function(err, ticket) {            
        if(err){
            console.log(err);
        }
        else {
            res.json(tickets);
        }
    });
});

也试过没有变量

router.route('/').get(function (req, res) {
        Ticket.find({ "Customers.Customer.CustomerID" : "123123123" }, function(err, ticket) {            
        if(err){
            console.log(err);
        }
        else {
            res.json(tickets);
        }
    });
});

当我在运行查询之前忘记连接到 Mongoose 时,我遇到了同样的问题

mongoose.connect(MONGO_URL, mongoOptions)
    .then(() => {
        // do your thing here
    })

你花了一年多的时间来解决这个问题,我相信你这样做了,但不管怎样,你的代码似乎有一个错字。 回调参数名为ticket - function(err, ticket) { ,而您正在记录tickets - res.json(tickets); . 在通用测试中,您正确地编写了tickets - Ticket.find(function (err, tickets){ ,这可能就是它起作用的原因。

这里的要点是 - 使用调试工具而不是日志记录,可以更容易地发现此类问题。

此外,一旦你弄清楚了,回答你自己的问题是合适的。 但考虑到这可能完全没用,你不妨删除它。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM