gpt4 book ai didi

node.js - 使用 Mongoose 将模式保存在数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:36 27 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 将架构直接保存在数据库中。以下是保存在 MongoDB 中的代码 (schema.js):

var mongoose = require('mongoose');
var Mixed = mongoose.Schema.Types.Mixed;
var modelSchema = mongoose.Schema({
schemaname:String,
object : Mixed
})

var Model = mongoose.model('Model',modelSchema);

exports.createModel = function(model){
var model_to_create = new Model(model);
console.log("creating a schema..." + model)
model_to_create.save(function(err,data){
console.log("Saving a schema...")
if(err){
return "model creation failed";
}else {
return "model creation success";
}
});

}

我正在使用以下代码创建一个架构:

var schema = require('../schemas/schema');     
var status = schema.createModel({
"username": String,
"firstname": String,
"lastname": String,
"description": String,
"education": String
})

由于某种原因,架构没有保存在数据库中。当我打印“status”时,我得到“undefined”

谁能帮我解决这个问题吗?

最佳答案

保存模型是一个异步操作,您必须等到它的回调被调用才能读取结果。一种常见的方法是传递一个函数,该函数将在保存完成时调用:

exports.createModel = function(model, callback) {
var model_to_create = new Model(model);
console.log("creating a schema..." + model)
model_to_create.save(function(err,data){
callback(err, data); // <-- called when save is ready
});
};
...
var schema = require('../schemas/schema');
schema.createModel({
"username": String,
"firstname": String,
"lastname": String,
"description": String,
"education": String
}, function(err, data) { // <-- this is the callback you pass
// here you handle the results of saving the model
});

编辑:此外,您的模型只有两个属性(schemanameobject),但您将 5 个属性传递给其构造函数。如果您打算保存每一项,则需要单独保存它们:

schema.createModel({
schemaname : 'username',
object : 'String' // (you probably need to stringify your type, you can't save a class to MongoDB)
}, function(err, data) { ... });

如果您想要/需要等待所有条目保存后再继续,您可以使用 async作为协调多个异步操作的一种方式。

关于node.js - 使用 Mongoose 将模式保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com