简体   繁体   中英

Mongoose are returning undefined value of property

Well, I'm trying to get a value of property from a object with Mongoose find(), but for some reason, the mongoose are returning a undefined value.

The Schema:

const mongoose = require('mongoose');
const uuid = require('uuid');

const Schema = mongoose.Schema({
  dsID: { type: String, unique: true, require: true },
  dsTag: { type: String },

  mcCode: { type: String, default: () => uuid.v4(), unique: true, select: false },
  mcConnected: { type: Boolean, default: false }

}, { versionKey: false });

const Members = mongoose.model("Members", Schema);
module.exports = Members;

The code

// Database connection
mongoose.connect(DATABASE.uri, DATABASE.options);

Members.find({ 'dsID': dsID }, (err, member) => {
  const connected = member.mcConnected;

  console.log(connected)
});

This might be because of you should not name a model 'Schema'. Try with other name because "Schema" is reserved word

Use this code on schema

const mongoose = require('mongoose');
const uuid = require('uuid');

const memberSchema = new mongoose.Schema({
  dsID: { type: String, unique: true, require: true },
  dsTag: { type: String },

  mcCode: { type: String, default: () => uuid.v4(), unique: true, select: false },
  mcConnected: { type: Boolean, default: false }

}, { versionKey: false });

const Members = mongoose.model("Members", memberSchema);
module.exports = Members;

Here u go boys:

const app = express()
const port = 3000

//MongoDB Connection
const DB_Connect = require('./(8.1)MongoDB_Connection')
const DB = DB_Connect() //returning a Model

//Middleware
const logger = function(req, res, next) {
    console.log('logging')
    next()
}
app.use(logger)

//Routes
app.get('/', async(req, res) => {
    console.log(DB.then((docs) => {
        console.log(docs.find({ name: 'POCO X3 Pro' }, (error, docs) => {
            if (error) {
                console.log("Error: " + error)
            } else {
                console.log(docs)
            }
        }))
    }))
})

/*

DB is a Model and console.log(DB) gives : " Promise { Model { users } } ".

But for Promise we use .then() for result.
    Model { users }

As we use .find(), we got the answer

*/

//Listening
app.listen(port, () => console.log(`Example app listening on port ${port}!`))

//Muhammad Irtaza Ghaffar (Pakistan)

Thanks me later!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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