[英]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.