【发布时间】:2017-02-06 23:29:11
【问题描述】:
错误:
'CastError: Cast to ObjectId failed for value "{ name: 'RandomName' }" at path "authors"'
我正在使用邮递员对我拥有_id 的书发出放置请求。我正在发送一个带有名称键值对的正文:“whateverName”。
我们的目标是让书籍在一个数组中包含许多作者,在每本书的一个名为“作者”的属性上。
这是控制器。
app.put("/book/update/:id", function(req, res) {
var author = req.body;
Book.findOneAndUpdate({_id: req.params.id}, {$push: {authors: author}}, {new: true}, function(err, book) {
if (err) {
console.log(err);
} else {
console.log("author inserted");
res.status(200).send();
}
})
})
这是作者架构。
```
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var AuthorSchema = new Schema({
name: String
});
module.exports = mongoose.model("Author", AuthorSchema);
```
这是 Book 架构。
```
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var BookSchema = new Schema({
title: String,
author: String,
category: String,
authors: [{type: Schema.ObjectId, ref: "Author"}]
});
module.exports = mongoose.model("Book", BookSchema);
```
为什么我在休息日这么难熬?有人可以告诉我什么给了吗?我只是想使用参考将新作者(这是它自己的模型)推送到特定书籍。
非常感谢:)
【问题讨论】:
-
在 BookSchema 字段中,“作者”是“Schema.ObjectId”的类型,但您传递的是字符串。这就是显示错误的原因
-
应该看起来像 - authors: [AuthorSchema] 吗?
标签: javascript node.js mongodb mongoose database