Node.js Monogse创建方法是';我没有创造任何东西
我正试图通过ajax请求在API中创建一个新文档 这是我的密码:Node.js Monogse创建方法是';我没有创造任何东西,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正试图通过ajax请求在API中创建一个新文档 这是我的密码: mongoose.model("Meals").create( { _id:mongoose.Schema.Types.ObjectId(), id:id, createdBy:basicAuth(req).name, title: req.body.title, description: req.body.description,
mongoose.model("Meals").create(
{
_id:mongoose.Schema.Types.ObjectId(),
id:id,
createdBy:basicAuth(req).name,
title: req.body.title,
description: req.body.description,
tags: tags,
mealAdded:(new Date).getTime(),
mealModified:(new Date).getTime(),
ordersLog:[]
},
function (error,out) {
res.send("Server responded with: " + out);
}
);
因此,根据法律,这应该是可行的。但是由于某种原因,out
是未定义的
,而错误
只是一个空对象{}
这是我的模型:
var mongoose = require('mongoose');
var mealsSchema = new mongoose.Schema({
_id:mongoose.Schema.Types.ObjectId,
id:{type:String},
createdBy:{type:String},
title: {type:String},
description: {type:String},
tags:[{type:String}],
mealAdded:{type:Number},
mealModified:{type:Number},
ordersLog:[{
number:{type:Number},
epoch:{type:Number},
phoneNumber:{type:String},
Address:{type:Number},
paid:{type:Number},
}]
});
mongoose.model('Meals', mealsSchema);
我已经检查了餐食
收藏,没有添加任何内容
我不知道我丢失了什么,我丢失了。我在
Mongoose v4.4.3
下测试您的代码,错误如下所示
[错误:文档在保存前必须具有_id]
通过mongoose.Schema.Types.objectId()
生成的objectId
似乎不正确,请参阅此
并更改代码如下,它运行良好
var ObjectId = mongoose.Types.ObjectId;
var id = new ObjectId;
console.log(id);
Meal.create(
{
_id: id,
id: '123',
createdBy:'abc',
title: 'dddd',
description: 'youare',
tags: 'asdfg',
mealAdded:(new Date).getTime(),
mealModified:(new Date).getTime(),
ordersLog:[]
},
function (error,out) {
console.log(error);
console.log("Server responded with: " + out);
}
);
您不需要在架构上定义
\u id
。猫鼬为你添加了它。您也不需要在创建时生成该_id。Mongo会帮你的。此外,Mongoose别名为\u id
为.id
,因此将其定义为模式中的字段将为您带来潜在的副作用。如果您想要一个次要id字段,我会将其显式命名为mealId
。话虽如此,您的问题是您正在使用mongoose.Schema.Types.ObjectId
vsnew mongoose.Types.ObjectId()
来生成您的ObjectId。您是否在代码中的任何地方发布了mongoose.connect()
?很有可能你还没有。@cdbajorin谢谢,这真的解决了我的问题。奇怪的是它没有给我任何错误。