如何在Mongoose中添加对另一个模式的引用,并通过json插入数据
How to add reference of one schema to another in Mongoose and inserting data by json?
我正在编写一个node.js应用程序,其中有两个mongoose架构钱包和用户。
- 我想添加钱包作为对用户的引用,并从POSTMAN传递相应的json。这就像在OOP中添加对另一个类的引用,在RDBMS中添加外键概念
我写了这样的模式:
user.js
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
userId: {type: String},
isAdmin: {type: Boolean, default: false},
password: {type: String},
name: {type: String},
wallet: {type: mongoose.Schema.Types.ObjectId, ref: 'Wallet'} //see here
});
module.exports = mongoose.model('User', userSchema);
我上面提到钱包的方式是正确的吗?如果没有,你能告诉我正确的方法吗?
wallet.js
var mongoose = require('mongoose');
var walletSchema = new mongoose.Schema({
money: {type: Number, default: 0, min: 0},
});
module.exports = mongoose.model('Wallet', walletSchema);
以下是我的用户路由文件。
userRoute.js
router.route('/user')
.post(function (req, res) {
var user = new User();
user.userId = req.body.userId;
user.password = req.body.password;
user.name = req.body.name;
user.isAdmin = req.body.isAdmin;
user.wallet = req.body.wallet; // see here
user.save(function(err, user){
if(err){
res.json({ message: 'Failure' });
return false;
}
res.json({ message: 'Success' });
});
})
我将钱包分配给用户对象的方式正确吗?如果不能,你能告诉我正确的方法吗?
现在我想发布Postman的原始json。json会是什么样子?
user.wallet = req.body.wallet
不起作用。
就User
而言,user.wallet
只是ObjectId类型的一个简单字段,它存储一个类似对象522abc...
的24个字符的十六进制字符串。
这个"参考"实际上是对Mongoose的更高层次的解释。
这就是为什么你不能直接做user.wallet = req.body.wallet
。你必须这样做:
var user = new User();
…
// user.wallet = req.body.wallet; // won't work
var wallet = new Wallet(req.body.wallet) // because Wallet too is a Schema just like User
user.wallet = wallet.id;
…
相关文章:
- 引用错误:在尝试使用ajax发送数据时未定义
- 如何在此 JSON 文件中引用此数据
- 移除 Firebase 数据中对child_added的引用
- 使用 Javascript 编写引用属性数据的 HTML
- 如何检测通过JSON数据引用的图像何时加载AJAX
- 在Javascript中,如何区分与实际数据一起保存的对象和作为引用保存的对象
- 如何引用Firefox扩展的数据目录中的文件
- 使用POST数据引用jsfiddle.net
- 使用dbpedia服务器的json数据的javascript引用错误
- 在Angularjs服务中为返回对象引用的http请求提供的数据构建简单的缓存
- 如何引用引导类型预处理的数据
- elasticsearch:保留冗余(非规范化)数据或保留 id 列表以进行交叉引用
- 在 AngularJs 中引用对象中的数据
- 数据表 - 引用子对象中的列
- 在 Backbone js 中永久引用来自另一个数据的数据
- 如何在 javascript 中引用从像 bottle 这样的 Web 框架返回的数据
- JavaScript 中的基元和引用数据类型
- jQuery - val 不从输入/UI 滑块引用数据
- 在vuejs中,如何从方法内完成的函数引用数据
- 引用数据类型 JavaScript