我有动物架构:
const AnimalSchema = new mongoose.Schema({
type: { type: String, default: "goldfish" },
size: String,
color: { type: String, default: "golden" },
mass: { type: Number, default: 0.007 },
name: { type: String, default: "Angela" }
});
动物数据阵列:
let animalData = [
{
type: 'mouse',
color: 'gray',
mass: 0.035,
name: 'Marvin'
},
{
type: 'nutria',
color: 'brown',
mass: 6.35,
name: 'Gretchen'
},
{
type: 'wolf',
color: 'gray',
mass: 45,
name: 'Iris'
}
];
然后我试图清空Animal模型中的所有数据,将该数组保存到数据库,记录一些动物数据并关闭连接:
Animal
.remove({})
.then(Animal.create(animalData))
.then(Animal.find({}).exec())
.then(animals => {
animals.forEach(animal => console.log(`${animal.name} is ${animal.color} ${animal.type}`))
})
.then(() => {
console.log('Saved!');
db.close().then(() => console.log('db connection closed'));
})
.catch((err) => {
console.error("Save Failed", err);
});
但是当我试图执行此操作时,我收到了错误消息: 保存失败TypeError:animals.forEach不是一个函数 在Animal.remove.then.then.then.animals(C:_projects \ express_api \ mongoose_sandbox.js:89:12)
我的代码有什么问题以及它是如何工作的?感谢。
答案 0 :(得分:1)
好的,这是一个简单的修复。 我需要编写我的.then()方法:
Animal
.remove({})
.then(Animal.create(animalData))
.then(Animal.find({}).exec())
像:
Animal
.remove({})
.then(() => Animal.create(animalData))
.then(() => Animal.find({}))
所以在那时方法需要传递一个回调函数。