为什么我得到未定义时,控制台日志(object.property)的猫



为什么我得到未定义console.log(object.property)?

这是我的代码:
const adminusersSchema = new mongoose.Schema({});
const adminusers = mongoose.model('adminusers', adminusersSchema, 'adminusers');
app.post('/login', async (req, res)=>{
let result = await adminusers.find();
console.log(result[0]);
console.log(result[0].mail);
res.send();
});

这是控制台的输出:

Connecting to DB
Connected to DB
Server on port: 3000
{
_id: 6110430c94569f3dfc90146d,
mail: 'admin@user.com',
password: 'admin123'
}
undefined

如果我尝试JSON。解析我得到一个错误:

app.post('/login', async (req, res)=>{
let result = await adminusers.find();
console.log(result[0]);
console.log(JSON.parse(result[0]).mail);
res.send();
});

SyntaxError: Unexpected token _ in JSON at position 4

我看不出我的代码有什么问题,因为如果我执行a:

app.post('/login', async (req, res)=>{
let object = {
'test': 'approved',
'problem': 'solved'
}
console.log(object)
console.log(object.test);
// let result = await adminusers.find();
// console.log(result[0]);
// console.log(JSON.parse(result[0]).mail);
// res.send();
});
我的<<p> strong>输出是:
Connecting to DB
Connected to DB
Server on port: 3000
{ test: 'approved', problem: 'solved' }
approved

我会尝试把猫鼬文档变成一个常规的javascript对象,你可以使用.toObject(),或者如果你计划从你的端点返回JSON那么也许使用.toJSON()代替。https://mongoosejs.com/docs/guide.html toObject。

const adminusersSchema = new mongoose.Schema({});
const adminusers = mongoose.model('adminusers', adminusersSchema, 'adminusers');
app.post('/login', async (req, res)=>{
const result = await adminusers.find();
const objectResult = result.toObject();
console.log(objectResult[0]);
console.log(objectResult[0].mail);
res.send();
});

评论中建议的另一个选项是在查询中使用lean()函数,如Documents returned from queries with the lean option enabled are plain javascript objects, not Mongoose Documents- https://mongoosejs.com/docs/api.html#query_Query-lean

const adminusersSchema = new mongoose.Schema({});
const adminusers = mongoose.model('adminusers', adminusersSchema, 'adminusers');
app.post('/login', async (req, res)=>{
let result = await adminusers.find().lean();
console.log(result[0]);
console.log(result[0].mail);
res.send();
});

最新更新