Các đoạn mã sau:Làm thế nào tôi có thể tiết kiệm một javascript lưu trữ trong MongoDB từ Node.js
var mongo = require('mongodb');
var db = new mongo.Db('test', new mongo.Server('127.0.0.1', 27017, {}));
var callback = function (e, result) {
if (e) {
console.log(e);
process.exit(1);
}
console.log(result);
process.exit(0);
}
db.open(function (e) {
if (e) callback(e);
db.collection('system.js', function (e, coll) {
if (e) callback(e);
coll.save({
"_id" : "myFunction",
"value" : "function myFunction() { return 123; }"
}, function (e) {
if (e) callback(e);
db.eval("myFunction()", [], function (e, result) {
if (e) callback(e);
callback(undefined, result);
});
});
});
});
kết quả đầu ra:
[Error: eval failed: invoke failed: JS Error: TypeError: myFunction is not a function nofile_a:0]
tôi phát hiện ra rằng vấn đề có liên quan đến dấu ngoặc kép ("") gói định nghĩa hàm.
On Mongo-cli:
> db.system.js.find()
{ "_id" : "myFunction", "value" : "function myFunction() { return 123; }" }
Nhưng sau:
> db.system.js.save({_id : "myFunction", value : function myFunction() { return 123; }});
và
> db.system.js.find()
{ "_id" : "myFunction", "value" : function cf__5__f_myFunction() {
return 123;
} }
các db.eval ("myFunction()"), công trình!
Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể lưu một thủ tục được lưu trữ từ node.js bằng trình điều khiển gốc-mongodb-nút?