Node.js Mongoose从嵌入的文档中获取值
我有一个这样的计划Node.js Mongoose从嵌入的文档中获取值,node.js,mongodb,mongoose,database,nosql,Node.js,Mongodb,Mongoose,Database,Nosql,我有一个这样的计划 var WFWorkItemDocument = new Schema({ id: { type: String, required: true, unique: true, default: uuid.v1 }, description: { type: String }, period: [{ id: { type: String, default: uuid.v1 }, s
var WFWorkItemDocument = new Schema({
id: { type: String, required: true, unique: true, default: uuid.v1 },
description: { type: String },
period: [{
id: { type: String, default: uuid.v1 },
start: { type: Date, default: Date.now }
due: { type: Number, integer: true },
new: { type: Number, integer: true },
}],
我想得到周期的应有值,因为我使用了如下方法
WorkItem.findOne({ id: idUpdate }, function(err, WorkItem) {
if (err) {
console.log("invlaid id");
//return res.send(404, { error: 'invalid id' });
}
if (WorkItem) {
console.log("id");
console.log(WorkItem.period.due);
} else {
//res.send(404, new Error('Workitem not found'));
}
});
但它不起作用我怎么才能得到应有的价值
这是console.log(WorkItem)更改架构以嵌入一个对象的结果。除非你需要嵌入式阵列
var WFWorkItemDocument = new Schema({
id: { type: String, required: true, unique: true, default: uuid.v1 },
description: { type: String },
period: {
id: { type: String, default: uuid.v1 },
start: { type: Date, default: Date.now }
due: { type: Number, integer: true },
new: { type: Number, integer: true },
},
如果将其定义为嵌入式阵列,则可以访问:
WorkItem.period[index].due
更改架构以嵌入一个对象。除非你需要嵌入式阵列
var WFWorkItemDocument = new Schema({
id: { type: String, required: true, unique: true, default: uuid.v1 },
description: { type: String },
period: {
id: { type: String, default: uuid.v1 },
start: { type: Date, default: Date.now }
due: { type: Number, integer: true },
new: { type: Number, integer: true },
},
如果将其定义为嵌入式阵列,则可以访问:
WorkItem.period[index].due
为什么不工作?您的控制台日志记录是什么?也许这是因为有两个不同类型的“到期”字段?对不起,我只编辑了一个到期。它说到期未定义。我使用控制台日志只是为了查看控制台日志上的输出您可以尝试在回调函数中更改工作项的名称吗?可能工作项引用的是架构,而不是找到的文档。例如:函数(err,item),if(item),然后是console.log(item.period.due)。请告诉我发生了什么console.log消息!您可以将期间
定义为embedded@dyouberg是的,我试过了,但还是没有定义为什么不起作用?您的控制台日志记录是什么?也许这是因为有两个不同类型的“到期”字段?对不起,我只编辑了一个到期。它说到期未定义。我使用控制台日志只是为了查看控制台日志上的输出您可以尝试在回调函数中更改工作项的名称吗?可能工作项引用的是架构,而不是找到的文档。例如:函数(err,item),if(item),然后是console.log(item.period.due)。请告诉我发生了什么console.log消息!您可以将期间
定义为embedded@dyouberg是的,我试过这样做,但仍然给出了未定义的工作项。句点[index]。到期,但仍然给出了未定义的错误。@kohli您使用的是哪个版本的monsoose?而索引
意味着输入一个索引号,如0
,1
。如果你根据我的答案改变了你的模式,你需要根据新的模式插入新的数据,否则我现在得到了正确的值。我使用了WorkItem.period[0]。它的到期日。谢谢@Ebrahim pasbani您得到了正确的值,但是您必须这样做,因为您的模式是错误的。修正你的模式比每次都做变通要好。@kohli,dyouberg是对的。您的数据模型需要修复。每个工作项只嵌入一个周期。我尝试了WorkItem.period[index]。到期,但它仍然给出未定义的错误。@kohli您使用的是哪个版本的monsoose?而索引
意味着输入一个索引号,如0
,1
。如果你根据我的答案改变了你的模式,你需要根据新的模式插入新的数据,否则我现在得到了正确的值。我使用了WorkItem.period[0]。它的到期日。谢谢@Ebrahim pasbani您得到了正确的值,但是您必须这样做,因为您的模式是错误的。修正你的模式比每次都做变通要好。@kohli,dyouberg是对的。您的数据模型需要修复。每个工作项只嵌入一个期间