【发布时间】:2021-02-23 14:17:08
【问题描述】:
架构:Login.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const LoginSchema = new Schema({
uname: {
type: String,
required: true
},
pass: {
type: String,
required: true
},
feeds : [Schema.Types.Mixed]
}, {strict: false});
module.exports = Login = mongoose.model('login', LoginSchema);
现在在 js 代码中我正在这样做:
const newLogin = new Login({
uname: 'guest',
pass: 'guest',
'random_key': 'random_value'
});
console.log(newLogin);
await newLogin.save();
Login.find({uname: req.body.uname}, function (err, logins) {
console.log("cool: ",logins[0].uname);
}
});
它有效!控制台显示:
docker-node-mongo | MongoDB Connected
docker-node-mongo | { feeds: [],
docker-node-mongo | _id: 5fab94031fd61f00121e0a13,
docker-node-mongo | uname: 'guest',
docker-node-mongo | pass: 'guest',
docker-node-mongo | random_key: 'random_value' }
cool: guest
但如果它在 js 文件中键入:(架构中未提及的属性(本质上是动态的)):
const newLogin = new Login({
uname: 'guest',
pass: 'guest',
'random_key': 'random_value'
});
console.log(newLogin);
await newLogin.save();
Login.find({uname: req.body.uname}, function (err, logins) {
console.log("cool: ",logins[0].random_key);
}
});
控制台显示:
docker-node-mongo | MongoDB Connected
docker-node-mongo | { feeds: [],
docker-node-mongo | _id: 5fab94031fd61f00121e0a13,
docker-node-mongo | uname: 'guest',
docker-node-mongo | pass: 'guest',
docker-node-mongo | random_key: 'random_value' }
cool: undefined
这里的问题是 console.log("cool": login[0].random_key) 中的值显示未定义。它是模式中未提及的属性。解决这个问题的方法是什么?如何输出这个属性? 谢谢。
【问题讨论】:
-
考虑查看 github.com/Automattic/monk,这是一个用于 node.js 的 MongoDB API,它是 mongo shell 的更直接端口。它不采用任何模式,这可能对您(诚然奇怪的)动态模式用例更有用。
标签: javascript html mongodb mongoose