为什么我得到未定义当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();
});