- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的查询是:
db.Room.find({}, function (err, rooms) {
if (!err) {
async.each(rooms, function (room, done) {
db.User.find({}, function (err, users) {
if (err) {
done(err)
} else {
room.users = users
room._name = room.name
done()
}
})
}, function (err) {
if (!err) {
socket.emit('read:rooms', rooms)
}
})
}
})
架构是:
房间:
var mongoose = require('mongoose')
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var Room = new Schema({
name: String
});
module.exports = Room
用户:
var mongoose = require('mongoose')
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var User = new Schema({
email: String
});
module.exports = User
但在前端:
socket.on('read:rooms', function (rooms) {
$scope.rooms = rooms
})
但是rooms
没有users
属性,请帮助我
最佳答案
这是因为 Rooms
架构没有 users
属性。
因此,有几种方法可以解决这个问题。因为看起来您希望 users 属性实际上不是架构的一部分,并且是客户端连接而不是在数据库上完成的工作(这是一个很好!),我建议您在通过套接字发送数据时将其转换为普通的旧 JavaScript 对象(无论如何,这都会发生,您只是提前做了一点)。
所以,当find
返回时,它实际上返回一个完全实现的MongooseJS模型对象。虽然您可以在对象实例上设置动态属性,但它们不是模型“数据”的一部分,因此当稍后将其序列化到客户端时,只有记录的属性才可用。
所以,这是我建议的一个例子:
db.Room.find({}, function (err, rooms) {
if (!err) {
var oRooms = [];
async.each(rooms, function (room, done) {
/* etc. your code */
} else {
var oRoom = room.toObject();
oRoom.users = users
oRoom._name = room.name
oRooms.push(oRoom);
done()
}
此技术将使用 toObject
functionality模型返回 JavaScript 对象(不是 Mongoose 模型)。这样,您就可以对对象执行您想要的操作,包括动态添加新属性。
当然,稍后请确保将新的房间数组发送给客户端:
if (!err) {
socket.emit('read:rooms', oRooms)
}
关于javascript - 分配属性值在 Mongoose 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794518/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!