Node.js mongoose模式包含整个DB对象,而不是定义的模式对象
我为用户使用了两种模式。一个包含密码/salt,一个不包含用于返回前端的密码/salt。当我使用使用不带密码的模式的模型时,它仍然返回密码:/ 通用用户(用于发送到客户端) 验证用户(用于创建/更新/验证用户) 使用创建模型 var modelInstance=mongoose.model(“authUser”,authUserSchema,“users”) (在另一个文件中) var modelInstance=mongoose.model(“用户”,userSchema,“用户”) modelInstance是使用 module.exports=模型实例 更新这个问题回答了我的问题。Node.js mongoose模式包含整个DB对象,而不是定义的模式对象,node.js,mongoose,Node.js,Mongoose,我为用户使用了两种模式。一个包含密码/salt,一个不包含用于返回前端的密码/salt。当我使用使用不带密码的模式的模型时,它仍然返回密码:/ 通用用户(用于发送到客户端) 验证用户(用于创建/更新/验证用户) 使用创建模型 var modelInstance=mongoose.model(“authUser”,authUserSchema,“users”) (在另一个文件中) var modelInstance=mongoose.model(“用户”,userSchema,“用户”) mode
你没有一个明确的问题,但我想你是在问是否可以限制它。默认情况下,答案是“否” 这里有一个插件: 但它真的过时了 创建包装器函数非常简单:
function safeUser(userModel) {
return {
username: userModel.username,
email: userModel.email,
firstName: userModel.firstName,
lastName: userModel.lastName,
createdOn: userModel.createdOn,
updatedOn: userModel.updatedOn,
scopes: userModel.scopes
}
}
你坚持这两个吗?i、 e.每个用户有两个条目?两个模型都代表同一个集合
用户
它将返回字段,无论您从哪个模型执行查询。要限制字段阻止,请在从userSchema
模型查询时选择password
字段。还假设您在中的每个文件结构都遵循一个模式/模型node@ambianBeing这个链接正是我所需要的。我只是没有在前面寻找正确的答案:(但是有这样的问题是很好的,不是每个人都会以同样的方式处理问题。
module.exports = {
username: String,
email: String,
password: String,
salt: String,
firstName: String,
lastName: String,
createdOn: Date,
updatedOn: Date,
scopes: [String]
}
function safeUser(userModel) {
return {
username: userModel.username,
email: userModel.email,
firstName: userModel.firstName,
lastName: userModel.lastName,
createdOn: userModel.createdOn,
updatedOn: userModel.updatedOn,
scopes: userModel.scopes
}
}