我是节点中的新手,我正在使用Feathersjs。
我正在尝试使用mongoose populate来处理user-model.js
和const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: {type: String, required: true, unique: true},
password: { type: String, required: true },
tasks: [{ type: Schema.Types.ObjectId, ref: 'Task' }],
createdAt: { type: Date, 'default': Date.now },
updatedAt: { type: Date, 'default': Date.now }
});
var Task = mongoose.model('Task', storySchema);
const userModel = mongoose.model('user', userSchema);
module.exports = userModel;
之间的关系
我的模特:
task-model.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const taskSchema = new Schema({
title: { type: String, required: true },
_creator : { type: String, ref: 'User' },
createdAt: { type: Date, 'default': Date.now },
updatedAt: { type: Date, 'default': Date.now }
});
var User = mongoose.model('user', storySchema);
const taskModel = mongoose.model('task', taskSchema);
module.exports = taskModel;
> db.users.find().pretty()
{
"_id" : ObjectId("5832da6919756a0edc2dfc59"),
"email" : "igorpollo@gmail.com",
"password" : "$2a$10$DToGYQ8smdfsK4oJPXmcyOdIfxXEaQGO5P16AhzBlrpESUMt5baNi",
"updatedAt" : ISODate("2016-11-21T11:28:41.371Z"),
"createdAt" : ISODate("2016-11-21T11:28:41.371Z"),
"tasks" : [ ],
"__v" : 0
}
> db.tasks.find().pretty()
{
"_id" : ObjectId("5832da7619756a0edc2dfc5a"),
"title" : "test",
"_creator" : "5832da6919756a0edc2dfc59",
"updatedAt" : ISODate("2016-11-21T11:28:54.470Z"),
"createdAt" : ISODate("2016-11-21T11:28:54.470Z"),
"__v" : 0
}
... is running beyond physical memory limits. Current usage: 4.6 GB of 4 GB physical memory used; 6.3 GB of 20 GB virtual memory used. Killing container. ...
当我添加新任务时,user.tasks仍为空:
mapreduce.reduce.memory.mb
答案 0 :(得分:0)
我知道这是一个旧帖子。如果有帮助,我会回答。
首先,上面的代码没有显示您如何插入数据。
这样,您可以在FeathersJS中进行填充。经过版本4.3.4
before: {
...,
create: [(ctx) => {
ctx.app.service('users').find({
query: {
$populate: ['tasks']
}
});
}
}]
或
在内部挂钩中,您可以像这样访问猫鼬模型(例如:在创建挂钩之前):
before: {
...,
create: [(ctx) => {
const UserModel = ctx.app.service('users').Model;
}
}]
现在您应该可以像这样填充tasks
:UserModel.find({}).populate('tasks')
或
如果您在服务类中可以访问app
,则可以得到如下模型:
app.service('users').Model
,然后运行上面显示的相同的填充查询。
答案 1 :(得分:-1)
MongoDB中没有连接,但有时我们仍然希望像在用例中那样引用其他集合中的文档。这就是人口涌入的地方。
因此,您可以使用DTO
进行尝试,如下所示:
mongoose
详细了解猫鼬的人口数量: http://mongoosejs.com/docs/populate.html